import pandas as pd
import numpy as np
import tensorflow as tf
import keras
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from keras.layers import GRU, Dense
from keras.models import Sequential
from tensorflow.keras.callbacks import EarlyStopping
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from PIL import Image
import os
window_size=5
def create_windows(features, labels, window_size):
windows = []
num_samples = min(len(features), len(labels)) # Adjust to the minimum length of features and labels
for i in range(num_samples - window_size + 1):
windows.append(features[i:i+window_size])
return windows, labels[:num_samples-window_size+1]
import matplotlib.pyplot as plt
import numpy as np
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_curve, roc_auc_score
def plot_metrics(history, y_true, y_pred_proba):
# Plot accuracy
plt.figure(figsize=(18, 5))
# Plot accuracy
plt.subplot(1, 4, 1)
plt.plot(history.history['accuracy'], label='Train Accuracy')
plt.plot(history.history['val_accuracy'], label='Validation Accuracy')
plt.title('Accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.legend()
# Plot loss per epoch
plt.subplot(1, 4, 2)
train_loss = history.history['loss']
val_loss = history.history['val_loss']
plt.plot(np.arange(1, len(train_loss) + 1), train_loss, label='Train Loss')
plt.plot(np.arange(1, len(val_loss) + 1), val_loss, label='Validation Loss')
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.title('Loss per Epoch')
plt.legend()
# Calculate and print metrics
accuracy = accuracy_score(y_true, y_pred_proba.round())
precision = precision_score(y_true, y_pred_proba.round())
recall = recall_score(y_true, y_pred_proba.round())
f1 = f1_score(y_true, y_pred_proba.round())
print("Accuracy: ", accuracy)
print("Precision: ", precision)
print("Recall: ", recall)
print("F1 score: ", f1)
# Plot precision, recall, and F1 score
plt.subplot(1, 4, 3)
metrics_names = ['Precision', 'Recall', 'F1 Score']
metrics = [precision, recall, f1]
plt.bar(metrics_names, metrics)
plt.title('Precision, Recall, and F1 Score')
plt.ylabel('Score')
# Plot ROC-AUC curve
plt.subplot(1, 4, 4)
fpr, tpr, thresholds = roc_curve(y_true, y_pred_proba)
roc_auc = roc_auc_score(y_true, y_pred_proba)
plt.plot(fpr, tpr, label=f'ROC-AUC = {roc_auc:.2f}')
plt.plot([0, 1], [0, 1], 'k--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC-AUC Curve')
plt.legend(loc='lower right')
plt.tight_layout()
plt.show()
dataset_dir = "../Data/Image_set2/Normal_images/train"
# Get the list of class directories in the dataset directory
class_dirs = [os.path.join(dataset_dir, class_dir) for class_dir in os.listdir(dataset_dir) if os.path.isdir(os.path.join(dataset_dir, class_dir))]
# Plot the first 60 images from each class
for class_dir in class_dirs:
# Get the list of image files in the class directory
image_files = [os.path.join(class_dir, image_file) for image_file in os.listdir(class_dir) if image_file.endswith('.jpg')]
# Plot the first 60 images from the class
plt.figure(figsize=(10, 6))
plt.suptitle(os.path.basename(class_dir))
for i in range(min(len(image_files), 60)):
plt.subplot(6, 10, i + 1)
image = Image.open(image_files[i])
plt.imshow(image)
plt.axis('off')
plt.show()
dataset_dir = "../Data/Image_set2/ELA_images/train"
# Get the list of class directories in the dataset directory
class_dirs = [os.path.join(dataset_dir, class_dir) for class_dir in os.listdir(dataset_dir) if os.path.isdir(os.path.join(dataset_dir, class_dir))]
# Plot the first 60 images from each class
for class_dir in class_dirs:
# Get the list of image files in the class directory
image_files = [os.path.join(class_dir, image_file) for image_file in os.listdir(class_dir) if image_file.endswith('.jpg')]
# Plot the first 60 images from the class
plt.figure(figsize=(10, 6))
plt.suptitle(os.path.basename(class_dir))
for i in range(min(len(image_files), 60)):
plt.subplot(6, 10, i + 1)
image = Image.open(image_files[i])
plt.imshow(image)
plt.axis('off')
plt.show()
dataset_dir = "../Data/sampled_Faces/Frames"
# Get the list of class directories in the dataset directory
class_dirs = [os.path.join(dataset_dir, class_dir) for class_dir in os.listdir(dataset_dir) if os.path.isdir(os.path.join(dataset_dir, class_dir))]
# Plot the first 60 images from each class
for class_dir in class_dirs:
# Get the list of image files in the class directory
image_files = [os.path.join(class_dir, image_file) for image_file in os.listdir(class_dir) if image_file.endswith('.jpg')]
# Plot the first 60 images from the class
plt.figure(figsize=(10, 6))
plt.suptitle(os.path.basename(class_dir))
for i in range(min(len(image_files), 60)):
plt.subplot(6, 10, i + 1)
image = Image.open(image_files[i])
plt.imshow(image)
plt.axis('off')
plt.show()
dataset_dir = "../Data/sampled_Faces/ELA_Frames"
# Get the list of class directories in the dataset directory
class_dirs = [os.path.join(dataset_dir, class_dir) for class_dir in os.listdir(dataset_dir) if os.path.isdir(os.path.join(dataset_dir, class_dir))]
# Plot the first 60 images from each class
for class_dir in class_dirs:
# Get the list of image files in the class directory
image_files = [os.path.join(class_dir, image_file) for image_file in os.listdir(class_dir) if image_file.endswith('.jpg')]
# Plot the first 60 images from the class
plt.figure(figsize=(10, 6))
plt.suptitle(os.path.basename(class_dir))
for i in range(min(len(image_files), 60)):
plt.subplot(6, 10, i + 1)
image = Image.open(image_files[i])
plt.imshow(image)
plt.axis('off')
plt.show()
df1=pd.read_csv("../Data/files/files/Celeb-df_vit.csv")
df1.head()
| Unnamed: 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ... | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | Label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0.319587 | 0.740929 | 0.464584 | 0.725391 | -0.012810 | -1.149684 | -0.038594 | -0.327014 | -0.154114 | ... | 0.371236 | -0.107152 | 0.009291 | 0.768575 | -0.685553 | 0.363147 | -0.134060 | 0.298729 | 0.410601 | 0 |
| 1 | 1 | 0.161553 | 0.282407 | 0.303938 | 0.341088 | -0.214515 | -0.484006 | -0.392677 | -0.436100 | -0.238849 | ... | 0.149390 | -0.052575 | -0.197187 | 0.180801 | -0.777508 | 0.225731 | 0.133878 | 0.147619 | 0.236145 | 0 |
| 2 | 2 | 0.176226 | 0.332912 | 0.183711 | 0.239652 | -0.339653 | -0.626031 | -0.346819 | -0.286595 | -0.079800 | ... | 0.212713 | 0.157118 | -0.148664 | 0.091372 | -0.650060 | 0.241216 | 0.132933 | 0.100103 | -0.045666 | 0 |
| 3 | 3 | 0.117250 | 0.246266 | 0.040510 | 0.296838 | -0.354080 | -0.398558 | -0.260375 | -0.149370 | -0.117103 | ... | 0.299755 | 0.162576 | -0.082298 | 0.042257 | -0.574919 | 0.355091 | 0.163088 | -0.007151 | -0.346583 | 0 |
| 4 | 4 | 0.187924 | 0.029395 | 0.205600 | 0.142896 | -0.162614 | -0.471617 | -0.374545 | -0.373469 | -0.125815 | ... | 0.222033 | 0.211545 | -0.209460 | 0.072756 | -0.709315 | 0.301771 | 0.280353 | 0.137477 | -0.074121 | 0 |
5 rows × 450 columns
df1=df1.drop(columns=["Unnamed: 0"],axis=1)
df1.head()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | Label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0.319587 | 0.740929 | 0.464584 | 0.725391 | -0.012810 | -1.149684 | -0.038594 | -0.327014 | -0.154114 | 0.384575 | ... | 0.371236 | -0.107152 | 0.009291 | 0.768575 | -0.685553 | 0.363147 | -0.134060 | 0.298729 | 0.410601 | 0 |
| 1 | 0.161553 | 0.282407 | 0.303938 | 0.341088 | -0.214515 | -0.484006 | -0.392677 | -0.436100 | -0.238849 | 0.040627 | ... | 0.149390 | -0.052575 | -0.197187 | 0.180801 | -0.777508 | 0.225731 | 0.133878 | 0.147619 | 0.236145 | 0 |
| 2 | 0.176226 | 0.332912 | 0.183711 | 0.239652 | -0.339653 | -0.626031 | -0.346819 | -0.286595 | -0.079800 | 0.123180 | ... | 0.212713 | 0.157118 | -0.148664 | 0.091372 | -0.650060 | 0.241216 | 0.132933 | 0.100103 | -0.045666 | 0 |
| 3 | 0.117250 | 0.246266 | 0.040510 | 0.296838 | -0.354080 | -0.398558 | -0.260375 | -0.149370 | -0.117103 | 0.228677 | ... | 0.299755 | 0.162576 | -0.082298 | 0.042257 | -0.574919 | 0.355091 | 0.163088 | -0.007151 | -0.346583 | 0 |
| 4 | 0.187924 | 0.029395 | 0.205600 | 0.142896 | -0.162614 | -0.471617 | -0.374545 | -0.373469 | -0.125815 | 0.051613 | ... | 0.222033 | 0.211545 | -0.209460 | 0.072756 | -0.709315 | 0.301771 | 0.280353 | 0.137477 | -0.074121 | 0 |
5 rows × 449 columns
df1.describe()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | Label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | ... | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 |
| mean | 0.259316 | 0.457617 | 0.445848 | 0.127436 | 0.080184 | -0.240346 | -0.268976 | -0.348638 | 0.068808 | 0.086026 | ... | 0.106439 | 0.064627 | -0.286260 | 0.601747 | -0.506296 | 0.262817 | 0.028609 | -0.026920 | 0.084267 | 0.497883 |
| std | 0.264986 | 0.324822 | 0.247092 | 0.262888 | 0.245127 | 0.430113 | 0.204650 | 0.258728 | 0.209300 | 0.222315 | ... | 0.166055 | 0.340704 | 0.289539 | 0.292156 | 0.229136 | 0.198547 | 0.233718 | 0.225405 | 0.423091 | 0.500004 |
| min | -0.877252 | -1.051733 | -0.752733 | -1.017211 | -0.994259 | -2.084225 | -1.118278 | -1.265651 | -0.839471 | -0.927544 | ... | -0.814973 | -1.191237 | -1.498489 | -1.042106 | -1.281658 | -0.736061 | -0.970482 | -0.929724 | -1.268619 | 0.000000 |
| 25% | 0.079479 | 0.238966 | 0.295908 | -0.044882 | -0.080356 | -0.548626 | -0.399674 | -0.528674 | -0.066946 | -0.066433 | ... | -0.004448 | -0.157839 | -0.482820 | 0.432542 | -0.654280 | 0.137684 | -0.125336 | -0.176880 | -0.214761 | 0.000000 |
| 50% | 0.271632 | 0.474799 | 0.462970 | 0.119968 | 0.081465 | -0.267080 | -0.272411 | -0.360597 | 0.060369 | 0.078148 | ... | 0.115495 | 0.063312 | -0.296643 | 0.605724 | -0.520673 | 0.272744 | 0.027090 | -0.024731 | 0.044856 | 0.000000 |
| 75% | 0.449859 | 0.684649 | 0.621247 | 0.296774 | 0.236858 | 0.039955 | -0.140543 | -0.179838 | 0.194579 | 0.227940 | ... | 0.218954 | 0.282649 | -0.096090 | 0.785375 | -0.377867 | 0.396353 | 0.193513 | 0.123633 | 0.363984 | 1.000000 |
| max | 1.171945 | 1.645007 | 1.165276 | 1.460021 | 1.019962 | 1.498935 | 0.735892 | 0.836205 | 1.245430 | 1.102608 | ... | 0.791295 | 1.647735 | 0.992804 | 1.865433 | 0.713694 | 0.975717 | 0.794580 | 0.877693 | 1.627519 | 1.000000 |
8 rows × 449 columns
X = df1.drop('Label', axis=1).values
y = df1['Label'].values
X = X[:5*(len(X)//5)]
y=y[:5*(len(y)//5)]
# Assuming you have X and y (features and labels) already defined
X_windows, y_windows = create_windows(X, y, window_size)
X_windows=np.array(X_windows)
y_windows=np.array(y_windows)
X_train, X_test, y_train, y_test = train_test_split(X_windows, y_windows, test_size=0.2, random_state=42)
model = Sequential()
# Add a GRU layer
model.add(GRU(units=64, input_shape=(window_size, X_train.shape[2])))
model.add(Dense(units=128, activation='relu'))
model.add(Dense(units=64, activation='relu'))
model.add(Dense(units=1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.2)
Epoch 1/50 605/605 [==============================] - 8s 6ms/step - loss: 0.4766 - accuracy: 0.7636 - val_loss: 0.3493 - val_accuracy: 0.8387 Epoch 2/50 605/605 [==============================] - 3s 5ms/step - loss: 0.2950 - accuracy: 0.8681 - val_loss: 0.2518 - val_accuracy: 0.8865 Epoch 3/50 605/605 [==============================] - 3s 5ms/step - loss: 0.2083 - accuracy: 0.9089 - val_loss: 0.2375 - val_accuracy: 0.9026 Epoch 4/50 605/605 [==============================] - 3s 5ms/step - loss: 0.1665 - accuracy: 0.9274 - val_loss: 0.1652 - val_accuracy: 0.9282 Epoch 5/50 605/605 [==============================] - 3s 6ms/step - loss: 0.1389 - accuracy: 0.9413 - val_loss: 0.1595 - val_accuracy: 0.9361 Epoch 6/50 605/605 [==============================] - 3s 6ms/step - loss: 0.1201 - accuracy: 0.9491 - val_loss: 0.1164 - val_accuracy: 0.9531 Epoch 7/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0974 - accuracy: 0.9599 - val_loss: 0.0924 - val_accuracy: 0.9651 Epoch 8/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0940 - accuracy: 0.9614 - val_loss: 0.0958 - val_accuracy: 0.9653 Epoch 9/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0791 - accuracy: 0.9670 - val_loss: 0.0840 - val_accuracy: 0.9713 Epoch 10/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0723 - accuracy: 0.9728 - val_loss: 0.0870 - val_accuracy: 0.9661 Epoch 11/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0641 - accuracy: 0.9753 - val_loss: 0.1402 - val_accuracy: 0.9479 Epoch 12/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0568 - accuracy: 0.9798 - val_loss: 0.0818 - val_accuracy: 0.9733 Epoch 13/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0508 - accuracy: 0.9813 - val_loss: 0.1125 - val_accuracy: 0.9613 Epoch 14/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0522 - accuracy: 0.9806 - val_loss: 0.0947 - val_accuracy: 0.9586 Epoch 15/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0371 - accuracy: 0.9865 - val_loss: 0.1166 - val_accuracy: 0.9609 Epoch 16/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0463 - accuracy: 0.9839 - val_loss: 0.0726 - val_accuracy: 0.9756 Epoch 17/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0350 - accuracy: 0.9873 - val_loss: 0.1067 - val_accuracy: 0.9620 Epoch 18/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0392 - accuracy: 0.9860 - val_loss: 0.0693 - val_accuracy: 0.9744 Epoch 19/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0277 - accuracy: 0.9911 - val_loss: 0.0778 - val_accuracy: 0.9785 Epoch 20/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0347 - accuracy: 0.9884 - val_loss: 0.0941 - val_accuracy: 0.9715 Epoch 21/50 605/605 [==============================] - 3s 4ms/step - loss: 0.0370 - accuracy: 0.9873 - val_loss: 0.0779 - val_accuracy: 0.9739 Epoch 22/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0293 - accuracy: 0.9906 - val_loss: 0.0654 - val_accuracy: 0.9789 Epoch 23/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0282 - accuracy: 0.9900 - val_loss: 0.0948 - val_accuracy: 0.9653 Epoch 24/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0289 - accuracy: 0.9901 - val_loss: 0.0704 - val_accuracy: 0.9731 Epoch 25/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0243 - accuracy: 0.9918 - val_loss: 0.0943 - val_accuracy: 0.9667 Epoch 26/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0190 - accuracy: 0.9940 - val_loss: 0.0537 - val_accuracy: 0.9828 Epoch 27/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0274 - accuracy: 0.9913 - val_loss: 0.0525 - val_accuracy: 0.9808 Epoch 28/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0246 - accuracy: 0.9916 - val_loss: 0.0481 - val_accuracy: 0.9841 Epoch 29/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0196 - accuracy: 0.9934 - val_loss: 0.0357 - val_accuracy: 0.9880 Epoch 30/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0200 - accuracy: 0.9935 - val_loss: 0.0823 - val_accuracy: 0.9742 Epoch 31/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0230 - accuracy: 0.9922 - val_loss: 0.0502 - val_accuracy: 0.9839 Epoch 32/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0173 - accuracy: 0.9948 - val_loss: 0.0500 - val_accuracy: 0.9830 Epoch 33/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0162 - accuracy: 0.9951 - val_loss: 0.0732 - val_accuracy: 0.9793 Epoch 34/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0207 - accuracy: 0.9941 - val_loss: 0.0607 - val_accuracy: 0.9793 Epoch 35/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0258 - accuracy: 0.9916 - val_loss: 0.0606 - val_accuracy: 0.9822 Epoch 36/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0186 - accuracy: 0.9942 - val_loss: 0.0388 - val_accuracy: 0.9868 Epoch 37/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0148 - accuracy: 0.9951 - val_loss: 0.1505 - val_accuracy: 0.9644 Epoch 38/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0196 - accuracy: 0.9947 - val_loss: 0.0892 - val_accuracy: 0.9682 Epoch 39/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0186 - accuracy: 0.9942 - val_loss: 0.1221 - val_accuracy: 0.9595 Epoch 40/50 605/605 [==============================] - 3s 5ms/step - loss: 0.0166 - accuracy: 0.9952 - val_loss: 0.0395 - val_accuracy: 0.9884 Epoch 41/50 605/605 [==============================] - 3s 4ms/step - loss: 0.0162 - accuracy: 0.9950 - val_loss: 0.0396 - val_accuracy: 0.9892 Epoch 42/50 605/605 [==============================] - 3s 4ms/step - loss: 0.0117 - accuracy: 0.9960 - val_loss: 0.0342 - val_accuracy: 0.9913 Epoch 43/50 605/605 [==============================] - 3s 4ms/step - loss: 0.0196 - accuracy: 0.9932 - val_loss: 0.0314 - val_accuracy: 0.9899 Epoch 44/50 605/605 [==============================] - 3s 4ms/step - loss: 0.0126 - accuracy: 0.9964 - val_loss: 0.0520 - val_accuracy: 0.9843 Epoch 45/50 605/605 [==============================] - 3s 4ms/step - loss: 0.0177 - accuracy: 0.9948 - val_loss: 0.0460 - val_accuracy: 0.9839 Epoch 46/50 605/605 [==============================] - 3s 4ms/step - loss: 0.0113 - accuracy: 0.9969 - val_loss: 0.0474 - val_accuracy: 0.9903 Epoch 47/50 605/605 [==============================] - 3s 4ms/step - loss: 0.0137 - accuracy: 0.9957 - val_loss: 0.0381 - val_accuracy: 0.9901 Epoch 48/50 605/605 [==============================] - 3s 4ms/step - loss: 0.0041 - accuracy: 0.9989 - val_loss: 0.0925 - val_accuracy: 0.9801 Epoch 49/50 605/605 [==============================] - 3s 4ms/step - loss: 0.0220 - accuracy: 0.9932 - val_loss: 0.0474 - val_accuracy: 0.9859 Epoch 50/50 605/605 [==============================] - 3s 4ms/step - loss: 0.0126 - accuracy: 0.9961 - val_loss: 0.0727 - val_accuracy: 0.9797
y_pred= model.predict(X_test)
plot_metrics(history, y_test, y_pred)
189/189 [==============================] - 1s 2ms/step Accuracy: 0.9768441945087661 Precision: 0.9571845604930262 Recall: 0.9972963839134843 F1 score: 0.976828864614366
df=pd.read_csv("../Data/files/files/FaceForensics++_vit.csv")
df.head()
| Unnamed: 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ... | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | Label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0.152438 | -0.121375 | 0.114292 | 0.435109 | -0.507435 | -0.624092 | 0.190492 | 0.046037 | -0.210777 | ... | 0.166606 | -0.503968 | -0.216118 | 0.285240 | -0.128606 | 0.091050 | 0.150067 | 0.317554 | 0.134370 | 0 |
| 1 | 1 | 0.163847 | -0.192323 | 0.040283 | 0.299069 | -0.458294 | -1.033910 | 0.174511 | 0.050176 | -0.237243 | ... | 0.113710 | -0.557863 | -0.370582 | 0.408184 | -0.203390 | 0.074348 | 0.040887 | 0.314162 | 0.173738 | 0 |
| 2 | 2 | 0.254703 | -0.477296 | 0.059869 | 0.288169 | -0.227808 | -0.729224 | 0.312402 | -0.080102 | -0.125552 | ... | 0.086803 | -0.506135 | -0.453529 | 0.355232 | -0.160394 | 0.125007 | 0.288522 | 0.423472 | 0.274884 | 0 |
| 3 | 3 | 0.390347 | 0.514306 | -0.427429 | -0.228258 | -0.192464 | -0.046658 | 0.326668 | -0.359907 | 0.035693 | ... | 0.163242 | -0.003001 | -0.384819 | 0.586222 | -0.071899 | -0.323445 | 0.295907 | -0.225351 | 0.517398 | 0 |
| 4 | 4 | 0.359816 | 0.448768 | 0.312162 | -0.087348 | -0.119048 | -0.109513 | -0.062974 | -0.484983 | 0.218991 | ... | 0.137529 | -0.571143 | 0.088718 | 0.923603 | -0.208798 | -0.208724 | -0.192980 | -0.314196 | -0.186290 | 0 |
5 rows × 450 columns
df=df.drop(columns=["Unnamed: 0"],axis=1)
df.head()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | Label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0.152438 | -0.121375 | 0.114292 | 0.435109 | -0.507435 | -0.624092 | 0.190492 | 0.046037 | -0.210777 | -0.026552 | ... | 0.166606 | -0.503968 | -0.216118 | 0.285240 | -0.128606 | 0.091050 | 0.150067 | 0.317554 | 0.134370 | 0 |
| 1 | 0.163847 | -0.192323 | 0.040283 | 0.299069 | -0.458294 | -1.033910 | 0.174511 | 0.050176 | -0.237243 | 0.277858 | ... | 0.113710 | -0.557863 | -0.370582 | 0.408184 | -0.203390 | 0.074348 | 0.040887 | 0.314162 | 0.173738 | 0 |
| 2 | 0.254703 | -0.477296 | 0.059869 | 0.288169 | -0.227808 | -0.729224 | 0.312402 | -0.080102 | -0.125552 | 0.184719 | ... | 0.086803 | -0.506135 | -0.453529 | 0.355232 | -0.160394 | 0.125007 | 0.288522 | 0.423472 | 0.274884 | 0 |
| 3 | 0.390347 | 0.514306 | -0.427429 | -0.228258 | -0.192464 | -0.046658 | 0.326668 | -0.359907 | 0.035693 | -0.206162 | ... | 0.163242 | -0.003001 | -0.384819 | 0.586222 | -0.071899 | -0.323445 | 0.295907 | -0.225351 | 0.517398 | 0 |
| 4 | 0.359816 | 0.448768 | 0.312162 | -0.087348 | -0.119048 | -0.109513 | -0.062974 | -0.484983 | 0.218991 | -0.187376 | ... | 0.137529 | -0.571143 | 0.088718 | 0.923603 | -0.208798 | -0.208724 | -0.192980 | -0.314196 | -0.186290 | 0 |
5 rows × 449 columns
X = df.drop('Label', axis=1).values
y = df['Label'].values
X = X[:5*(len(X)//5)]
y=y[:5*(len(y)//5)]
X_windows, y_windows = create_windows(X, y, window_size)
X_windows=np.array(X_windows)
y_windows=np.array(y_windows)
X_train, X_test, y_train, y_test = train_test_split(X_windows, y_windows, test_size=0.2, random_state=42)
model = Sequential()
# Add a GRU layer
model.add(GRU(units=64, input_shape=(window_size, X_train.shape[2])))
model.add(Dense(units=128, activation='relu'))
model.add(Dense(units=64, activation='relu'))
model.add(Dense(units=1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=50, batch_size=32, validation_split=0.2)
Epoch 1/50 677/677 [==============================] - 5s 5ms/step - loss: 0.3776 - accuracy: 0.8197 - val_loss: 0.2229 - val_accuracy: 0.9046 Epoch 2/50 677/677 [==============================] - 3s 5ms/step - loss: 0.1477 - accuracy: 0.9432 - val_loss: 0.1114 - val_accuracy: 0.9566 Epoch 3/50 677/677 [==============================] - 3s 4ms/step - loss: 0.1012 - accuracy: 0.9615 - val_loss: 0.1674 - val_accuracy: 0.9381 Epoch 4/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0725 - accuracy: 0.9721 - val_loss: 0.0891 - val_accuracy: 0.9682 Epoch 5/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0619 - accuracy: 0.9744 - val_loss: 0.0923 - val_accuracy: 0.9688 Epoch 6/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0516 - accuracy: 0.9804 - val_loss: 0.0637 - val_accuracy: 0.9784 Epoch 7/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0462 - accuracy: 0.9829 - val_loss: 0.0608 - val_accuracy: 0.9765 Epoch 8/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0390 - accuracy: 0.9865 - val_loss: 0.0547 - val_accuracy: 0.9806 Epoch 9/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0386 - accuracy: 0.9855 - val_loss: 0.0646 - val_accuracy: 0.9745 Epoch 10/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0342 - accuracy: 0.9868 - val_loss: 0.0504 - val_accuracy: 0.9824 Epoch 11/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0325 - accuracy: 0.9886 - val_loss: 0.0352 - val_accuracy: 0.9858 Epoch 12/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0262 - accuracy: 0.9901 - val_loss: 0.0508 - val_accuracy: 0.9821 Epoch 13/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0273 - accuracy: 0.9895 - val_loss: 0.0512 - val_accuracy: 0.9800 Epoch 14/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0216 - accuracy: 0.9923 - val_loss: 0.0533 - val_accuracy: 0.9837 Epoch 15/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0235 - accuracy: 0.9919 - val_loss: 0.0354 - val_accuracy: 0.9882 Epoch 16/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0186 - accuracy: 0.9933 - val_loss: 0.0803 - val_accuracy: 0.9756 Epoch 17/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0205 - accuracy: 0.9930 - val_loss: 0.0389 - val_accuracy: 0.9876 Epoch 18/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0157 - accuracy: 0.9943 - val_loss: 0.0304 - val_accuracy: 0.9898 Epoch 19/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0155 - accuracy: 0.9942 - val_loss: 0.0592 - val_accuracy: 0.9830 Epoch 20/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0207 - accuracy: 0.9927 - val_loss: 0.0258 - val_accuracy: 0.9909 Epoch 21/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0156 - accuracy: 0.9951 - val_loss: 0.0313 - val_accuracy: 0.9897 Epoch 22/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0178 - accuracy: 0.9942 - val_loss: 0.0290 - val_accuracy: 0.9902 Epoch 23/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0156 - accuracy: 0.9949 - val_loss: 0.0251 - val_accuracy: 0.9911 Epoch 24/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0098 - accuracy: 0.9971 - val_loss: 0.0311 - val_accuracy: 0.9898 Epoch 25/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0173 - accuracy: 0.9940 - val_loss: 0.0500 - val_accuracy: 0.9837 Epoch 26/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0116 - accuracy: 0.9967 - val_loss: 0.0535 - val_accuracy: 0.9819 Epoch 27/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0138 - accuracy: 0.9952 - val_loss: 0.0423 - val_accuracy: 0.9895 Epoch 28/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0138 - accuracy: 0.9957 - val_loss: 0.0299 - val_accuracy: 0.9908 Epoch 29/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0105 - accuracy: 0.9967 - val_loss: 0.0459 - val_accuracy: 0.9843 Epoch 30/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0112 - accuracy: 0.9961 - val_loss: 0.0348 - val_accuracy: 0.9852 Epoch 31/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0088 - accuracy: 0.9973 - val_loss: 0.0443 - val_accuracy: 0.9885 Epoch 32/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0141 - accuracy: 0.9956 - val_loss: 0.0354 - val_accuracy: 0.9861 Epoch 33/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0093 - accuracy: 0.9970 - val_loss: 0.0627 - val_accuracy: 0.9806 Epoch 34/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0083 - accuracy: 0.9974 - val_loss: 0.0260 - val_accuracy: 0.9922 Epoch 35/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0102 - accuracy: 0.9967 - val_loss: 0.0354 - val_accuracy: 0.9897 Epoch 36/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0073 - accuracy: 0.9976 - val_loss: 0.0211 - val_accuracy: 0.9943 Epoch 37/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0064 - accuracy: 0.9982 - val_loss: 0.0378 - val_accuracy: 0.9904 Epoch 38/50 677/677 [==============================] - 3s 4ms/step - loss: 0.0108 - accuracy: 0.9968 - val_loss: 0.0436 - val_accuracy: 0.9860 Epoch 39/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0059 - accuracy: 0.9982 - val_loss: 0.0221 - val_accuracy: 0.9937 Epoch 40/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0144 - accuracy: 0.9954 - val_loss: 0.0211 - val_accuracy: 0.9937 Epoch 41/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0058 - accuracy: 0.9981 - val_loss: 0.0413 - val_accuracy: 0.9904 Epoch 42/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0080 - accuracy: 0.9976 - val_loss: 0.0439 - val_accuracy: 0.9891 Epoch 43/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0091 - accuracy: 0.9972 - val_loss: 0.0306 - val_accuracy: 0.9897 Epoch 44/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0062 - accuracy: 0.9982 - val_loss: 0.0314 - val_accuracy: 0.9895 Epoch 45/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0019 - accuracy: 0.9993 - val_loss: 0.0311 - val_accuracy: 0.9945 Epoch 46/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0130 - accuracy: 0.9964 - val_loss: 0.0229 - val_accuracy: 0.9930 Epoch 47/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0069 - accuracy: 0.9982 - val_loss: 0.0315 - val_accuracy: 0.9915 Epoch 48/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0067 - accuracy: 0.9980 - val_loss: 0.0222 - val_accuracy: 0.9928 Epoch 49/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0051 - accuracy: 0.9983 - val_loss: 0.0195 - val_accuracy: 0.9948 Epoch 50/50 677/677 [==============================] - 3s 5ms/step - loss: 0.0042 - accuracy: 0.9987 - val_loss: 0.0541 - val_accuracy: 0.9874
y_pred= model.predict(X_test)
plot_metrics(history, y_test, y_pred)
212/212 [==============================] - 1s 2ms/step Accuracy: 0.9866942637492608 Precision: 0.9807744381261847 Recall: 0.9947816533919253 F1 score: 0.9877283883283338
df1=pd.read_csv("../Data/files/files/Celeb-df_vit.csv")
df1.head()
| Unnamed: 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ... | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | Label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0.319587 | 0.740929 | 0.464584 | 0.725391 | -0.012810 | -1.149684 | -0.038594 | -0.327014 | -0.154114 | ... | 0.371236 | -0.107152 | 0.009291 | 0.768575 | -0.685553 | 0.363147 | -0.134060 | 0.298729 | 0.410601 | 0 |
| 1 | 1 | 0.161553 | 0.282407 | 0.303938 | 0.341088 | -0.214515 | -0.484006 | -0.392677 | -0.436100 | -0.238849 | ... | 0.149390 | -0.052575 | -0.197187 | 0.180801 | -0.777508 | 0.225731 | 0.133878 | 0.147619 | 0.236145 | 0 |
| 2 | 2 | 0.176226 | 0.332912 | 0.183711 | 0.239652 | -0.339653 | -0.626031 | -0.346819 | -0.286595 | -0.079800 | ... | 0.212713 | 0.157118 | -0.148664 | 0.091372 | -0.650060 | 0.241216 | 0.132933 | 0.100103 | -0.045666 | 0 |
| 3 | 3 | 0.117250 | 0.246266 | 0.040510 | 0.296838 | -0.354080 | -0.398558 | -0.260375 | -0.149370 | -0.117103 | ... | 0.299755 | 0.162576 | -0.082298 | 0.042257 | -0.574919 | 0.355091 | 0.163088 | -0.007151 | -0.346583 | 0 |
| 4 | 4 | 0.187924 | 0.029395 | 0.205600 | 0.142896 | -0.162614 | -0.471617 | -0.374545 | -0.373469 | -0.125815 | ... | 0.222033 | 0.211545 | -0.209460 | 0.072756 | -0.709315 | 0.301771 | 0.280353 | 0.137477 | -0.074121 | 0 |
5 rows × 450 columns
df1=df1.drop(columns=["Unnamed: 0"],axis=1)
df1.head()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | Label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0.319587 | 0.740929 | 0.464584 | 0.725391 | -0.012810 | -1.149684 | -0.038594 | -0.327014 | -0.154114 | 0.384575 | ... | 0.371236 | -0.107152 | 0.009291 | 0.768575 | -0.685553 | 0.363147 | -0.134060 | 0.298729 | 0.410601 | 0 |
| 1 | 0.161553 | 0.282407 | 0.303938 | 0.341088 | -0.214515 | -0.484006 | -0.392677 | -0.436100 | -0.238849 | 0.040627 | ... | 0.149390 | -0.052575 | -0.197187 | 0.180801 | -0.777508 | 0.225731 | 0.133878 | 0.147619 | 0.236145 | 0 |
| 2 | 0.176226 | 0.332912 | 0.183711 | 0.239652 | -0.339653 | -0.626031 | -0.346819 | -0.286595 | -0.079800 | 0.123180 | ... | 0.212713 | 0.157118 | -0.148664 | 0.091372 | -0.650060 | 0.241216 | 0.132933 | 0.100103 | -0.045666 | 0 |
| 3 | 0.117250 | 0.246266 | 0.040510 | 0.296838 | -0.354080 | -0.398558 | -0.260375 | -0.149370 | -0.117103 | 0.228677 | ... | 0.299755 | 0.162576 | -0.082298 | 0.042257 | -0.574919 | 0.355091 | 0.163088 | -0.007151 | -0.346583 | 0 |
| 4 | 0.187924 | 0.029395 | 0.205600 | 0.142896 | -0.162614 | -0.471617 | -0.374545 | -0.373469 | -0.125815 | 0.051613 | ... | 0.222033 | 0.211545 | -0.209460 | 0.072756 | -0.709315 | 0.301771 | 0.280353 | 0.137477 | -0.074121 | 0 |
5 rows × 449 columns
df1.describe()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | Label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | ... | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 | 30230.000000 |
| mean | 0.259316 | 0.457617 | 0.445848 | 0.127436 | 0.080184 | -0.240346 | -0.268976 | -0.348638 | 0.068808 | 0.086026 | ... | 0.106439 | 0.064627 | -0.286260 | 0.601747 | -0.506296 | 0.262817 | 0.028609 | -0.026920 | 0.084267 | 0.497883 |
| std | 0.264986 | 0.324822 | 0.247092 | 0.262888 | 0.245127 | 0.430113 | 0.204650 | 0.258728 | 0.209300 | 0.222315 | ... | 0.166055 | 0.340704 | 0.289539 | 0.292156 | 0.229136 | 0.198547 | 0.233718 | 0.225405 | 0.423091 | 0.500004 |
| min | -0.877252 | -1.051733 | -0.752733 | -1.017211 | -0.994259 | -2.084225 | -1.118278 | -1.265651 | -0.839471 | -0.927544 | ... | -0.814973 | -1.191237 | -1.498489 | -1.042106 | -1.281658 | -0.736061 | -0.970482 | -0.929724 | -1.268619 | 0.000000 |
| 25% | 0.079479 | 0.238966 | 0.295908 | -0.044882 | -0.080356 | -0.548626 | -0.399674 | -0.528674 | -0.066946 | -0.066433 | ... | -0.004448 | -0.157839 | -0.482820 | 0.432542 | -0.654280 | 0.137684 | -0.125336 | -0.176880 | -0.214761 | 0.000000 |
| 50% | 0.271632 | 0.474799 | 0.462970 | 0.119968 | 0.081465 | -0.267080 | -0.272411 | -0.360597 | 0.060369 | 0.078148 | ... | 0.115495 | 0.063312 | -0.296643 | 0.605724 | -0.520673 | 0.272744 | 0.027090 | -0.024731 | 0.044856 | 0.000000 |
| 75% | 0.449859 | 0.684649 | 0.621247 | 0.296774 | 0.236858 | 0.039955 | -0.140543 | -0.179838 | 0.194579 | 0.227940 | ... | 0.218954 | 0.282649 | -0.096090 | 0.785375 | -0.377867 | 0.396353 | 0.193513 | 0.123633 | 0.363984 | 1.000000 |
| max | 1.171945 | 1.645007 | 1.165276 | 1.460021 | 1.019962 | 1.498935 | 0.735892 | 0.836205 | 1.245430 | 1.102608 | ... | 0.791295 | 1.647735 | 0.992804 | 1.865433 | 0.713694 | 0.975717 | 0.794580 | 0.877693 | 1.627519 | 1.000000 |
8 rows × 449 columns
X = df1.drop('Label', axis=1).values
y = df1['Label'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = Sequential()
model.add(Dense(128, activation='relu', input_shape=(X_train.shape[1],)))
model.add(Dense(64, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2)
Epoch 1/100 605/605 [==============================] - 2s 4ms/step - loss: 0.5210 - accuracy: 0.7304 - val_loss: 0.5057 - val_accuracy: 0.7335 Epoch 2/100 605/605 [==============================] - 2s 3ms/step - loss: 0.3784 - accuracy: 0.8229 - val_loss: 0.3893 - val_accuracy: 0.8253 Epoch 3/100 605/605 [==============================] - 2s 3ms/step - loss: 0.3092 - accuracy: 0.8594 - val_loss: 0.3201 - val_accuracy: 0.8611 Epoch 4/100 605/605 [==============================] - 2s 3ms/step - loss: 0.2704 - accuracy: 0.8822 - val_loss: 0.2829 - val_accuracy: 0.8778 Epoch 5/100 605/605 [==============================] - 2s 3ms/step - loss: 0.2392 - accuracy: 0.8969 - val_loss: 0.3013 - val_accuracy: 0.8685 Epoch 6/100 605/605 [==============================] - 2s 3ms/step - loss: 0.2058 - accuracy: 0.9105 - val_loss: 0.2722 - val_accuracy: 0.8813 Epoch 7/100 605/605 [==============================] - 2s 3ms/step - loss: 0.1907 - accuracy: 0.9198 - val_loss: 0.2676 - val_accuracy: 0.8873 Epoch 8/100 605/605 [==============================] - 2s 3ms/step - loss: 0.1695 - accuracy: 0.9295 - val_loss: 0.2462 - val_accuracy: 0.9010 Epoch 9/100 605/605 [==============================] - 2s 3ms/step - loss: 0.1515 - accuracy: 0.9362 - val_loss: 0.2664 - val_accuracy: 0.8960 Epoch 10/100 605/605 [==============================] - 2s 3ms/step - loss: 0.1491 - accuracy: 0.9378 - val_loss: 0.2252 - val_accuracy: 0.9090 Epoch 11/100 605/605 [==============================] - 2s 3ms/step - loss: 0.1254 - accuracy: 0.9475 - val_loss: 0.2380 - val_accuracy: 0.9024 Epoch 12/100 605/605 [==============================] - 2s 3ms/step - loss: 0.1209 - accuracy: 0.9507 - val_loss: 0.2347 - val_accuracy: 0.9115 Epoch 13/100 605/605 [==============================] - 2s 3ms/step - loss: 0.1154 - accuracy: 0.9537 - val_loss: 0.2222 - val_accuracy: 0.9192 Epoch 14/100 605/605 [==============================] - 2s 3ms/step - loss: 0.1029 - accuracy: 0.9601 - val_loss: 0.2428 - val_accuracy: 0.9128 Epoch 15/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0993 - accuracy: 0.9601 - val_loss: 0.2249 - val_accuracy: 0.9202 Epoch 16/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0864 - accuracy: 0.9660 - val_loss: 0.2587 - val_accuracy: 0.9111 Epoch 17/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0880 - accuracy: 0.9651 - val_loss: 0.2570 - val_accuracy: 0.9183 Epoch 18/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0784 - accuracy: 0.9702 - val_loss: 0.2195 - val_accuracy: 0.9274 Epoch 19/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0691 - accuracy: 0.9728 - val_loss: 0.2557 - val_accuracy: 0.9202 Epoch 20/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0734 - accuracy: 0.9711 - val_loss: 0.2655 - val_accuracy: 0.9223 Epoch 21/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0669 - accuracy: 0.9737 - val_loss: 0.2997 - val_accuracy: 0.9076 Epoch 22/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0632 - accuracy: 0.9760 - val_loss: 0.2619 - val_accuracy: 0.9233 Epoch 23/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0639 - accuracy: 0.9758 - val_loss: 0.2707 - val_accuracy: 0.9235 Epoch 24/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0570 - accuracy: 0.9784 - val_loss: 0.3060 - val_accuracy: 0.9119 Epoch 25/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0522 - accuracy: 0.9795 - val_loss: 0.2854 - val_accuracy: 0.9250 Epoch 26/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0573 - accuracy: 0.9777 - val_loss: 0.2754 - val_accuracy: 0.9206 Epoch 27/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0534 - accuracy: 0.9788 - val_loss: 0.2530 - val_accuracy: 0.9320 Epoch 28/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0433 - accuracy: 0.9845 - val_loss: 0.2912 - val_accuracy: 0.9223 Epoch 29/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0466 - accuracy: 0.9824 - val_loss: 0.2869 - val_accuracy: 0.9276 Epoch 30/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0469 - accuracy: 0.9824 - val_loss: 0.2737 - val_accuracy: 0.9235 Epoch 31/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0499 - accuracy: 0.9826 - val_loss: 0.2654 - val_accuracy: 0.9270 Epoch 32/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0338 - accuracy: 0.9878 - val_loss: 0.2651 - val_accuracy: 0.9343 Epoch 33/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0426 - accuracy: 0.9838 - val_loss: 0.2739 - val_accuracy: 0.9312 Epoch 34/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0417 - accuracy: 0.9844 - val_loss: 0.2674 - val_accuracy: 0.9349 Epoch 35/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0391 - accuracy: 0.9863 - val_loss: 0.2713 - val_accuracy: 0.9338 Epoch 36/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0427 - accuracy: 0.9831 - val_loss: 0.2848 - val_accuracy: 0.9278 Epoch 37/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0368 - accuracy: 0.9869 - val_loss: 0.2931 - val_accuracy: 0.9243 Epoch 38/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0285 - accuracy: 0.9901 - val_loss: 0.2709 - val_accuracy: 0.9295 Epoch 39/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0374 - accuracy: 0.9865 - val_loss: 0.2741 - val_accuracy: 0.9343 Epoch 40/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0317 - accuracy: 0.9885 - val_loss: 0.3214 - val_accuracy: 0.9287 Epoch 41/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0380 - accuracy: 0.9872 - val_loss: 0.2950 - val_accuracy: 0.9312 Epoch 42/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0300 - accuracy: 0.9896 - val_loss: 0.3083 - val_accuracy: 0.9343 Epoch 43/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0318 - accuracy: 0.9896 - val_loss: 0.2933 - val_accuracy: 0.9285 Epoch 44/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0341 - accuracy: 0.9872 - val_loss: 0.2635 - val_accuracy: 0.9440 Epoch 45/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0240 - accuracy: 0.9916 - val_loss: 0.4152 - val_accuracy: 0.9051 Epoch 46/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0319 - accuracy: 0.9887 - val_loss: 0.2805 - val_accuracy: 0.9338 Epoch 47/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0356 - accuracy: 0.9869 - val_loss: 0.2702 - val_accuracy: 0.9341 Epoch 48/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0296 - accuracy: 0.9901 - val_loss: 0.2627 - val_accuracy: 0.9448 Epoch 49/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0229 - accuracy: 0.9921 - val_loss: 0.3046 - val_accuracy: 0.9347 Epoch 50/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0307 - accuracy: 0.9891 - val_loss: 0.3137 - val_accuracy: 0.9367 Epoch 51/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0270 - accuracy: 0.9908 - val_loss: 0.2662 - val_accuracy: 0.9403 Epoch 52/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0237 - accuracy: 0.9922 - val_loss: 0.3016 - val_accuracy: 0.9357 Epoch 53/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0283 - accuracy: 0.9906 - val_loss: 0.3156 - val_accuracy: 0.9369 Epoch 54/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0209 - accuracy: 0.9940 - val_loss: 0.3363 - val_accuracy: 0.9307 Epoch 55/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0349 - accuracy: 0.9880 - val_loss: 0.2674 - val_accuracy: 0.9361 Epoch 56/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0190 - accuracy: 0.9936 - val_loss: 0.3776 - val_accuracy: 0.9157 Epoch 57/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0262 - accuracy: 0.9910 - val_loss: 0.3247 - val_accuracy: 0.9305 Epoch 58/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0266 - accuracy: 0.9910 - val_loss: 0.2988 - val_accuracy: 0.9353 Epoch 59/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0133 - accuracy: 0.9959 - val_loss: 0.2904 - val_accuracy: 0.9440 Epoch 60/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0304 - accuracy: 0.9902 - val_loss: 0.3277 - val_accuracy: 0.9272 Epoch 61/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0262 - accuracy: 0.9911 - val_loss: 0.2760 - val_accuracy: 0.9353 Epoch 62/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0193 - accuracy: 0.9924 - val_loss: 0.2931 - val_accuracy: 0.9421 Epoch 63/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0141 - accuracy: 0.9955 - val_loss: 0.3207 - val_accuracy: 0.9392 Epoch 64/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0269 - accuracy: 0.9909 - val_loss: 0.3146 - val_accuracy: 0.9322 Epoch 65/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0234 - accuracy: 0.9921 - val_loss: 0.3002 - val_accuracy: 0.9382 Epoch 66/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0139 - accuracy: 0.9958 - val_loss: 0.3868 - val_accuracy: 0.9250 Epoch 67/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0217 - accuracy: 0.9931 - val_loss: 0.3077 - val_accuracy: 0.9386 Epoch 68/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0213 - accuracy: 0.9929 - val_loss: 0.3141 - val_accuracy: 0.9386 Epoch 69/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0221 - accuracy: 0.9943 - val_loss: 0.2820 - val_accuracy: 0.9438 Epoch 70/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0087 - accuracy: 0.9972 - val_loss: 0.3518 - val_accuracy: 0.9345 Epoch 71/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0374 - accuracy: 0.9883 - val_loss: 0.2965 - val_accuracy: 0.9425 Epoch 72/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0142 - accuracy: 0.9956 - val_loss: 0.3544 - val_accuracy: 0.9322 Epoch 73/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0210 - accuracy: 0.9931 - val_loss: 0.2892 - val_accuracy: 0.9460 Epoch 74/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0082 - accuracy: 0.9975 - val_loss: 0.3763 - val_accuracy: 0.9272 Epoch 75/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0272 - accuracy: 0.9906 - val_loss: 0.3706 - val_accuracy: 0.9272 Epoch 76/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0213 - accuracy: 0.9931 - val_loss: 0.3111 - val_accuracy: 0.9355 Epoch 77/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0047 - accuracy: 0.9990 - val_loss: 0.3097 - val_accuracy: 0.9469 Epoch 78/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0379 - accuracy: 0.9885 - val_loss: 0.2855 - val_accuracy: 0.9400 Epoch 79/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0166 - accuracy: 0.9953 - val_loss: 0.3315 - val_accuracy: 0.9357 Epoch 80/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0158 - accuracy: 0.9948 - val_loss: 0.3648 - val_accuracy: 0.9312 Epoch 81/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0167 - accuracy: 0.9937 - val_loss: 0.3043 - val_accuracy: 0.9425 Epoch 82/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0114 - accuracy: 0.9970 - val_loss: 0.3142 - val_accuracy: 0.9394 Epoch 83/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0214 - accuracy: 0.9934 - val_loss: 0.3649 - val_accuracy: 0.9256 Epoch 84/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0191 - accuracy: 0.9945 - val_loss: 0.3008 - val_accuracy: 0.9425 Epoch 85/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0158 - accuracy: 0.9946 - val_loss: 0.2873 - val_accuracy: 0.9442 Epoch 86/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0154 - accuracy: 0.9948 - val_loss: 0.3522 - val_accuracy: 0.9305 Epoch 87/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0219 - accuracy: 0.9923 - val_loss: 0.2889 - val_accuracy: 0.9469 Epoch 88/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0130 - accuracy: 0.9956 - val_loss: 0.3114 - val_accuracy: 0.9382 Epoch 89/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0116 - accuracy: 0.9962 - val_loss: 0.3243 - val_accuracy: 0.9427 Epoch 90/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0031 - accuracy: 0.9991 - val_loss: 0.3012 - val_accuracy: 0.9483 Epoch 91/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0228 - accuracy: 0.9931 - val_loss: 0.3238 - val_accuracy: 0.9303 Epoch 92/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0137 - accuracy: 0.9957 - val_loss: 0.3029 - val_accuracy: 0.9434 Epoch 93/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0174 - accuracy: 0.9944 - val_loss: 0.3253 - val_accuracy: 0.9403 Epoch 94/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0140 - accuracy: 0.9959 - val_loss: 0.3458 - val_accuracy: 0.9351 Epoch 95/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0142 - accuracy: 0.9968 - val_loss: 0.3503 - val_accuracy: 0.9359 Epoch 96/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0190 - accuracy: 0.9931 - val_loss: 0.3330 - val_accuracy: 0.9400 Epoch 97/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0104 - accuracy: 0.9965 - val_loss: 0.4058 - val_accuracy: 0.9241 Epoch 98/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0163 - accuracy: 0.9939 - val_loss: 0.3840 - val_accuracy: 0.9338 Epoch 99/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0112 - accuracy: 0.9968 - val_loss: 0.3583 - val_accuracy: 0.9384 Epoch 100/100 605/605 [==============================] - 2s 3ms/step - loss: 0.0178 - accuracy: 0.9944 - val_loss: 0.3532 - val_accuracy: 0.9365
y_pred= model.predict(X_test)
plot_metrics(history, y_test, y_pred)
189/189 [==============================] - 0s 1000us/step Accuracy: 0.9345021501819385 Precision: 0.9240589198036007 Recall: 0.9450954134583194 F1 score: 0.9344587884806356
df=pd.read_csv("../Data/files/files/FaceForensics++_vit.csv")
df.head()
| Unnamed: 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ... | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | Label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0.152438 | -0.121375 | 0.114292 | 0.435109 | -0.507435 | -0.624092 | 0.190492 | 0.046037 | -0.210777 | ... | 0.166606 | -0.503968 | -0.216118 | 0.285240 | -0.128606 | 0.091050 | 0.150067 | 0.317554 | 0.134370 | 0 |
| 1 | 1 | 0.163847 | -0.192323 | 0.040283 | 0.299069 | -0.458294 | -1.033910 | 0.174511 | 0.050176 | -0.237243 | ... | 0.113710 | -0.557863 | -0.370582 | 0.408184 | -0.203390 | 0.074348 | 0.040887 | 0.314162 | 0.173738 | 0 |
| 2 | 2 | 0.254703 | -0.477296 | 0.059869 | 0.288169 | -0.227808 | -0.729224 | 0.312402 | -0.080102 | -0.125552 | ... | 0.086803 | -0.506135 | -0.453529 | 0.355232 | -0.160394 | 0.125007 | 0.288522 | 0.423472 | 0.274884 | 0 |
| 3 | 3 | 0.390347 | 0.514306 | -0.427429 | -0.228258 | -0.192464 | -0.046658 | 0.326668 | -0.359907 | 0.035693 | ... | 0.163242 | -0.003001 | -0.384819 | 0.586222 | -0.071899 | -0.323445 | 0.295907 | -0.225351 | 0.517398 | 0 |
| 4 | 4 | 0.359816 | 0.448768 | 0.312162 | -0.087348 | -0.119048 | -0.109513 | -0.062974 | -0.484983 | 0.218991 | ... | 0.137529 | -0.571143 | 0.088718 | 0.923603 | -0.208798 | -0.208724 | -0.192980 | -0.314196 | -0.186290 | 0 |
5 rows × 450 columns
df=df.drop(columns=["Unnamed: 0"],axis=1)
df.head()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | Label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0.152438 | -0.121375 | 0.114292 | 0.435109 | -0.507435 | -0.624092 | 0.190492 | 0.046037 | -0.210777 | -0.026552 | ... | 0.166606 | -0.503968 | -0.216118 | 0.285240 | -0.128606 | 0.091050 | 0.150067 | 0.317554 | 0.134370 | 0 |
| 1 | 0.163847 | -0.192323 | 0.040283 | 0.299069 | -0.458294 | -1.033910 | 0.174511 | 0.050176 | -0.237243 | 0.277858 | ... | 0.113710 | -0.557863 | -0.370582 | 0.408184 | -0.203390 | 0.074348 | 0.040887 | 0.314162 | 0.173738 | 0 |
| 2 | 0.254703 | -0.477296 | 0.059869 | 0.288169 | -0.227808 | -0.729224 | 0.312402 | -0.080102 | -0.125552 | 0.184719 | ... | 0.086803 | -0.506135 | -0.453529 | 0.355232 | -0.160394 | 0.125007 | 0.288522 | 0.423472 | 0.274884 | 0 |
| 3 | 0.390347 | 0.514306 | -0.427429 | -0.228258 | -0.192464 | -0.046658 | 0.326668 | -0.359907 | 0.035693 | -0.206162 | ... | 0.163242 | -0.003001 | -0.384819 | 0.586222 | -0.071899 | -0.323445 | 0.295907 | -0.225351 | 0.517398 | 0 |
| 4 | 0.359816 | 0.448768 | 0.312162 | -0.087348 | -0.119048 | -0.109513 | -0.062974 | -0.484983 | 0.218991 | -0.187376 | ... | 0.137529 | -0.571143 | 0.088718 | 0.923603 | -0.208798 | -0.208724 | -0.192980 | -0.314196 | -0.186290 | 0 |
5 rows × 449 columns
df.describe()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | Label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | ... | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 |
| mean | 0.272619 | 0.281531 | 0.339054 | 0.176897 | 0.044571 | -0.231133 | -0.249112 | -0.325600 | 0.131958 | -0.011497 | ... | 0.064102 | -0.024026 | -0.485595 | 0.618238 | -0.324585 | 0.169320 | 0.009428 | -0.121364 | 0.252611 | 0.544215 |
| std | 0.285683 | 0.299512 | 0.247988 | 0.286988 | 0.261253 | 0.351187 | 0.210916 | 0.279473 | 0.193017 | 0.209272 | ... | 0.168881 | 0.323774 | 0.282491 | 0.318749 | 0.249475 | 0.221200 | 0.260220 | 0.204180 | 0.301996 | 0.498049 |
| min | -0.716121 | -1.091918 | -0.970462 | -1.265896 | -1.513051 | -1.655808 | -1.130957 | -1.279676 | -0.977436 | -0.822260 | ... | -0.810001 | -1.480015 | -1.677552 | -1.147435 | -1.227208 | -0.742887 | -1.090384 | -1.049094 | -1.564107 | 0.000000 |
| 25% | 0.060918 | 0.094214 | 0.195939 | -0.015770 | -0.116209 | -0.479078 | -0.386642 | -0.517194 | 0.001159 | -0.156483 | ... | -0.043560 | -0.229300 | -0.665989 | 0.446297 | -0.488332 | 0.021712 | -0.165028 | -0.262308 | 0.067304 | 0.000000 |
| 50% | 0.266341 | 0.284008 | 0.362269 | 0.183547 | 0.049469 | -0.252696 | -0.267005 | -0.340202 | 0.126785 | -0.019830 | ... | 0.056910 | -0.021583 | -0.479717 | 0.638513 | -0.348752 | 0.156528 | 0.013723 | -0.119376 | 0.275894 | 1.000000 |
| 75% | 0.476358 | 0.472212 | 0.506652 | 0.381466 | 0.216911 | 0.004149 | -0.130899 | -0.138111 | 0.262356 | 0.128056 | ... | 0.167894 | 0.185798 | -0.308893 | 0.818612 | -0.181892 | 0.314495 | 0.197132 | 0.010702 | 0.455184 | 1.000000 |
| max | 1.474950 | 1.395929 | 1.119541 | 1.322609 | 1.164944 | 1.342574 | 1.014356 | 0.852236 | 0.860625 | 1.060370 | ... | 0.802561 | 1.550066 | 1.283821 | 1.889155 | 0.864893 | 0.946342 | 0.826602 | 0.923870 | 1.260599 | 1.000000 |
8 rows × 449 columns
X = df.drop('Label', axis=1).values
y = df['Label'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = Sequential()
model.add(Dense(128, activation='relu', input_shape=(X_train.shape[1],)))
model.add(Dense(64, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2)
Epoch 1/100 677/677 [==============================] - 3s 4ms/step - loss: 0.4636 - accuracy: 0.7763 - val_loss: 0.3019 - val_accuracy: 0.8777 Epoch 2/100 677/677 [==============================] - 2s 3ms/step - loss: 0.2504 - accuracy: 0.9045 - val_loss: 0.2128 - val_accuracy: 0.9154 Epoch 3/100 677/677 [==============================] - 2s 3ms/step - loss: 0.1892 - accuracy: 0.9269 - val_loss: 0.1946 - val_accuracy: 0.9268 Epoch 4/100 677/677 [==============================] - 2s 3ms/step - loss: 0.1596 - accuracy: 0.9377 - val_loss: 0.2256 - val_accuracy: 0.9167 Epoch 5/100 677/677 [==============================] - 2s 3ms/step - loss: 0.1393 - accuracy: 0.9465 - val_loss: 0.1666 - val_accuracy: 0.9374 Epoch 6/100 677/677 [==============================] - 2s 3ms/step - loss: 0.1256 - accuracy: 0.9510 - val_loss: 0.1827 - val_accuracy: 0.9296 Epoch 7/100 677/677 [==============================] - 2s 3ms/step - loss: 0.1105 - accuracy: 0.9573 - val_loss: 0.1874 - val_accuracy: 0.9329 Epoch 8/100 677/677 [==============================] - 2s 3ms/step - loss: 0.1002 - accuracy: 0.9590 - val_loss: 0.1623 - val_accuracy: 0.9429 Epoch 9/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0939 - accuracy: 0.9621 - val_loss: 0.1720 - val_accuracy: 0.9401 Epoch 10/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0896 - accuracy: 0.9652 - val_loss: 0.1712 - val_accuracy: 0.9368 Epoch 11/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0797 - accuracy: 0.9683 - val_loss: 0.1834 - val_accuracy: 0.9401 Epoch 12/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0714 - accuracy: 0.9727 - val_loss: 0.1823 - val_accuracy: 0.9337 Epoch 13/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0712 - accuracy: 0.9721 - val_loss: 0.1585 - val_accuracy: 0.9431 Epoch 14/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0653 - accuracy: 0.9752 - val_loss: 0.1854 - val_accuracy: 0.9337 Epoch 15/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0629 - accuracy: 0.9759 - val_loss: 0.1740 - val_accuracy: 0.9392 Epoch 16/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0590 - accuracy: 0.9766 - val_loss: 0.1627 - val_accuracy: 0.9464 Epoch 17/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0520 - accuracy: 0.9798 - val_loss: 0.2026 - val_accuracy: 0.9446 Epoch 18/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0493 - accuracy: 0.9807 - val_loss: 0.1904 - val_accuracy: 0.9468 Epoch 19/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0540 - accuracy: 0.9798 - val_loss: 0.1810 - val_accuracy: 0.9466 Epoch 20/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0467 - accuracy: 0.9822 - val_loss: 0.1824 - val_accuracy: 0.9508 Epoch 21/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0456 - accuracy: 0.9819 - val_loss: 0.2480 - val_accuracy: 0.9370 Epoch 22/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0455 - accuracy: 0.9824 - val_loss: 0.1958 - val_accuracy: 0.9477 Epoch 23/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0372 - accuracy: 0.9860 - val_loss: 0.2176 - val_accuracy: 0.9425 Epoch 24/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0392 - accuracy: 0.9854 - val_loss: 0.1731 - val_accuracy: 0.9529 Epoch 25/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0351 - accuracy: 0.9864 - val_loss: 0.2118 - val_accuracy: 0.9472 Epoch 26/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0362 - accuracy: 0.9871 - val_loss: 0.1619 - val_accuracy: 0.9588 Epoch 27/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0323 - accuracy: 0.9875 - val_loss: 0.1944 - val_accuracy: 0.9448 Epoch 28/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0364 - accuracy: 0.9869 - val_loss: 0.2028 - val_accuracy: 0.9473 Epoch 29/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0295 - accuracy: 0.9891 - val_loss: 0.1780 - val_accuracy: 0.9555 Epoch 30/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0355 - accuracy: 0.9866 - val_loss: 0.1743 - val_accuracy: 0.9518 Epoch 31/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0293 - accuracy: 0.9895 - val_loss: 0.2101 - val_accuracy: 0.9499 Epoch 32/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0240 - accuracy: 0.9919 - val_loss: 0.1676 - val_accuracy: 0.9558 Epoch 33/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0286 - accuracy: 0.9900 - val_loss: 0.1866 - val_accuracy: 0.9542 Epoch 34/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0270 - accuracy: 0.9902 - val_loss: 0.1934 - val_accuracy: 0.9536 Epoch 35/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0330 - accuracy: 0.9882 - val_loss: 0.1836 - val_accuracy: 0.9521 Epoch 36/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0267 - accuracy: 0.9905 - val_loss: 0.1886 - val_accuracy: 0.9571 Epoch 37/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0184 - accuracy: 0.9936 - val_loss: 0.2237 - val_accuracy: 0.9497 Epoch 38/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0326 - accuracy: 0.9883 - val_loss: 0.1842 - val_accuracy: 0.9571 Epoch 39/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0193 - accuracy: 0.9934 - val_loss: 0.2622 - val_accuracy: 0.9361 Epoch 40/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0259 - accuracy: 0.9906 - val_loss: 0.1976 - val_accuracy: 0.9525 Epoch 41/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0201 - accuracy: 0.9932 - val_loss: 0.2000 - val_accuracy: 0.9499 Epoch 42/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0228 - accuracy: 0.9924 - val_loss: 0.1953 - val_accuracy: 0.9562 Epoch 43/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0199 - accuracy: 0.9932 - val_loss: 0.2246 - val_accuracy: 0.9566 Epoch 44/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0224 - accuracy: 0.9926 - val_loss: 0.2068 - val_accuracy: 0.9540 Epoch 45/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0199 - accuracy: 0.9939 - val_loss: 0.1985 - val_accuracy: 0.9577 Epoch 46/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0163 - accuracy: 0.9945 - val_loss: 0.1979 - val_accuracy: 0.9579 Epoch 47/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0232 - accuracy: 0.9921 - val_loss: 0.1885 - val_accuracy: 0.9592 Epoch 48/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0227 - accuracy: 0.9922 - val_loss: 0.1851 - val_accuracy: 0.9608 Epoch 49/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0145 - accuracy: 0.9953 - val_loss: 0.1804 - val_accuracy: 0.9588 Epoch 50/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0151 - accuracy: 0.9952 - val_loss: 0.2240 - val_accuracy: 0.9540 Epoch 51/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0251 - accuracy: 0.9913 - val_loss: 0.1716 - val_accuracy: 0.9619 Epoch 52/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0139 - accuracy: 0.9951 - val_loss: 0.2034 - val_accuracy: 0.9614 Epoch 53/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0210 - accuracy: 0.9929 - val_loss: 0.1907 - val_accuracy: 0.9614 Epoch 54/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0105 - accuracy: 0.9963 - val_loss: 0.2053 - val_accuracy: 0.9619 Epoch 55/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0154 - accuracy: 0.9948 - val_loss: 0.2465 - val_accuracy: 0.9538 Epoch 56/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0186 - accuracy: 0.9939 - val_loss: 0.2109 - val_accuracy: 0.9581 Epoch 57/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0137 - accuracy: 0.9953 - val_loss: 0.2915 - val_accuracy: 0.9508 Epoch 58/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0195 - accuracy: 0.9933 - val_loss: 0.2471 - val_accuracy: 0.9549 Epoch 59/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0158 - accuracy: 0.9941 - val_loss: 0.2222 - val_accuracy: 0.9538 Epoch 60/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0109 - accuracy: 0.9959 - val_loss: 0.2119 - val_accuracy: 0.9597 Epoch 61/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0233 - accuracy: 0.9926 - val_loss: 0.2192 - val_accuracy: 0.9569 Epoch 62/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0096 - accuracy: 0.9971 - val_loss: 0.1921 - val_accuracy: 0.9593 Epoch 63/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0090 - accuracy: 0.9971 - val_loss: 0.2679 - val_accuracy: 0.9496 Epoch 64/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0210 - accuracy: 0.9937 - val_loss: 0.1900 - val_accuracy: 0.9597 Epoch 65/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0122 - accuracy: 0.9959 - val_loss: 0.2149 - val_accuracy: 0.9619 Epoch 66/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0125 - accuracy: 0.9959 - val_loss: 0.2198 - val_accuracy: 0.9579 Epoch 67/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0072 - accuracy: 0.9978 - val_loss: 0.1886 - val_accuracy: 0.9630 Epoch 68/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0175 - accuracy: 0.9934 - val_loss: 0.2342 - val_accuracy: 0.9533 Epoch 69/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0115 - accuracy: 0.9969 - val_loss: 0.3015 - val_accuracy: 0.9497 Epoch 70/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0164 - accuracy: 0.9947 - val_loss: 0.2221 - val_accuracy: 0.9579 Epoch 71/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0136 - accuracy: 0.9956 - val_loss: 0.2246 - val_accuracy: 0.9523 Epoch 72/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0106 - accuracy: 0.9964 - val_loss: 0.2298 - val_accuracy: 0.9581 Epoch 73/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0174 - accuracy: 0.9945 - val_loss: 0.2364 - val_accuracy: 0.9497 Epoch 74/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0070 - accuracy: 0.9978 - val_loss: 0.2059 - val_accuracy: 0.9616 Epoch 75/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0135 - accuracy: 0.9957 - val_loss: 0.2104 - val_accuracy: 0.9577 Epoch 76/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0142 - accuracy: 0.9945 - val_loss: 0.2455 - val_accuracy: 0.9544 Epoch 77/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0134 - accuracy: 0.9954 - val_loss: 0.2271 - val_accuracy: 0.9630 Epoch 78/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0015 - accuracy: 0.9997 - val_loss: 0.2038 - val_accuracy: 0.9664 Epoch 79/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0147 - accuracy: 0.9952 - val_loss: 0.2080 - val_accuracy: 0.9592 Epoch 80/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0178 - accuracy: 0.9952 - val_loss: 0.3003 - val_accuracy: 0.9521 Epoch 81/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0084 - accuracy: 0.9978 - val_loss: 0.2055 - val_accuracy: 0.9629 Epoch 82/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0128 - accuracy: 0.9973 - val_loss: 0.2150 - val_accuracy: 0.9597 Epoch 83/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0111 - accuracy: 0.9970 - val_loss: 0.2099 - val_accuracy: 0.9640 Epoch 84/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0147 - accuracy: 0.9955 - val_loss: 0.1858 - val_accuracy: 0.9662 Epoch 85/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0070 - accuracy: 0.9976 - val_loss: 0.1903 - val_accuracy: 0.9625 Epoch 86/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0124 - accuracy: 0.9956 - val_loss: 0.2082 - val_accuracy: 0.9619 Epoch 87/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0086 - accuracy: 0.9976 - val_loss: 0.1962 - val_accuracy: 0.9654 Epoch 88/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0109 - accuracy: 0.9966 - val_loss: 0.1950 - val_accuracy: 0.9625 Epoch 89/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0051 - accuracy: 0.9986 - val_loss: 0.1870 - val_accuracy: 0.9654 Epoch 90/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0135 - accuracy: 0.9954 - val_loss: 0.2436 - val_accuracy: 0.9510 Epoch 91/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0091 - accuracy: 0.9969 - val_loss: 0.2226 - val_accuracy: 0.9571 Epoch 92/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0129 - accuracy: 0.9958 - val_loss: 0.2645 - val_accuracy: 0.9557 Epoch 93/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0073 - accuracy: 0.9978 - val_loss: 0.2068 - val_accuracy: 0.9581 Epoch 94/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0014 - accuracy: 0.9999 - val_loss: 0.2045 - val_accuracy: 0.9656 Epoch 95/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0049 - accuracy: 0.9990 - val_loss: 0.3014 - val_accuracy: 0.9564 Epoch 96/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0186 - accuracy: 0.9940 - val_loss: 0.2105 - val_accuracy: 0.9629 Epoch 97/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0137 - accuracy: 0.9962 - val_loss: 0.2263 - val_accuracy: 0.9586 Epoch 98/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0080 - accuracy: 0.9975 - val_loss: 0.1911 - val_accuracy: 0.9667 Epoch 99/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0040 - accuracy: 0.9991 - val_loss: 0.1900 - val_accuracy: 0.9693 Epoch 100/100 677/677 [==============================] - 2s 3ms/step - loss: 0.0149 - accuracy: 0.9956 - val_loss: 0.2355 - val_accuracy: 0.9593
y_pred= model.predict(X_test)
plot_metrics(history, y_test, y_pred)
212/212 [==============================] - 0s 1ms/step Accuracy: 0.955949741315595 Precision: 0.9546195652173913 Recall: 0.9640504939626784 F1 score: 0.9593118514472966
df1=pd.read_csv("../Data/celebdfELAEfficientFormer.csv")
df1.head()
| Unnamed: 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ... | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0.025186 | -0.449716 | 0.068540 | -0.088177 | 0.676742 | -0.129679 | 0.194051 | 0.451481 | -0.364540 | ... | 0.280182 | 0.644649 | -0.343197 | -0.078438 | 0.272100 | 2.226118 | 0.493412 | 0.674437 | 0.194667 | 0 |
| 1 | 1 | -0.095308 | 0.087300 | -0.011636 | -0.130743 | 0.835891 | -0.103505 | 0.100504 | 0.359275 | -0.214617 | ... | 0.190872 | 0.399202 | -0.337352 | 0.059878 | -0.018754 | 2.373381 | 0.497917 | 0.992538 | 0.213082 | 0 |
| 2 | 2 | -0.038010 | 0.093009 | 0.308163 | 0.085492 | 0.568194 | -0.287209 | 0.198596 | 0.257177 | -0.331733 | ... | 0.453456 | 0.351223 | -0.241861 | -0.024323 | -0.243413 | 1.896587 | 0.562990 | 1.003954 | 0.255093 | 0 |
| 3 | 3 | 0.169853 | -0.274449 | 0.199159 | 0.041275 | 0.632550 | -0.679584 | -0.043747 | 0.220982 | -0.367786 | ... | 0.418552 | 0.590394 | -0.376741 | 0.121219 | -0.000668 | 1.857692 | 0.554728 | 1.193748 | 0.176276 | 0 |
| 4 | 4 | -0.126610 | 0.127802 | 0.298108 | 0.058954 | 0.706597 | -0.257466 | 0.016120 | 0.131400 | -0.087156 | ... | 0.173684 | 0.456634 | -0.362030 | 0.174100 | -0.194326 | 1.992287 | 0.563068 | 1.015490 | 0.146547 | 0 |
5 rows × 770 columns
df1=df1.drop(columns=["Unnamed: 0"],axis=1)
df1.head()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0.025186 | -0.449716 | 0.068540 | -0.088177 | 0.676742 | -0.129679 | 0.194051 | 0.451481 | -0.364540 | -0.357125 | ... | 0.280182 | 0.644649 | -0.343197 | -0.078438 | 0.272100 | 2.226118 | 0.493412 | 0.674437 | 0.194667 | 0 |
| 1 | -0.095308 | 0.087300 | -0.011636 | -0.130743 | 0.835891 | -0.103505 | 0.100504 | 0.359275 | -0.214617 | -0.195753 | ... | 0.190872 | 0.399202 | -0.337352 | 0.059878 | -0.018754 | 2.373381 | 0.497917 | 0.992538 | 0.213082 | 0 |
| 2 | -0.038010 | 0.093009 | 0.308163 | 0.085492 | 0.568194 | -0.287209 | 0.198596 | 0.257177 | -0.331733 | -0.204873 | ... | 0.453456 | 0.351223 | -0.241861 | -0.024323 | -0.243413 | 1.896587 | 0.562990 | 1.003954 | 0.255093 | 0 |
| 3 | 0.169853 | -0.274449 | 0.199159 | 0.041275 | 0.632550 | -0.679584 | -0.043747 | 0.220982 | -0.367786 | -0.268311 | ... | 0.418552 | 0.590394 | -0.376741 | 0.121219 | -0.000668 | 1.857692 | 0.554728 | 1.193748 | 0.176276 | 0 |
| 4 | -0.126610 | 0.127802 | 0.298108 | 0.058954 | 0.706597 | -0.257466 | 0.016120 | 0.131400 | -0.087156 | -0.428363 | ... | 0.173684 | 0.456634 | -0.362030 | 0.174100 | -0.194326 | 1.992287 | 0.563068 | 1.015490 | 0.146547 | 0 |
5 rows × 769 columns
df1.describe()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | ... | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 | 29736.000000 |
| mean | 0.037555 | -0.179992 | 0.148113 | 0.234918 | 0.611928 | -0.000502 | 0.302173 | 0.374693 | 0.001347 | -0.441403 | ... | 0.314177 | 0.417635 | -0.371263 | 0.089894 | 0.459800 | 2.399432 | 0.631343 | 0.847298 | 0.279537 | 0.505751 |
| std | 0.214848 | 0.369348 | 0.239389 | 0.206890 | 0.192872 | 0.478599 | 0.249763 | 0.195433 | 0.288792 | 0.211083 | ... | 0.192939 | 0.344610 | 0.190637 | 0.225932 | 0.349579 | 0.592963 | 0.318731 | 0.424755 | 0.217199 | 0.499975 |
| min | -0.844092 | -1.897691 | -0.802899 | -0.434313 | -0.248805 | -2.045574 | -1.399551 | -0.432623 | -1.020128 | -1.157032 | ... | -0.599320 | -0.817217 | -1.150233 | -0.773274 | -0.724404 | -0.630124 | -0.377874 | -0.701382 | -0.681044 | 0.000000 |
| 25% | -0.101387 | -0.405809 | -0.014997 | 0.093391 | 0.489322 | -0.306624 | 0.159186 | 0.251412 | -0.196562 | -0.583558 | ... | 0.189330 | 0.194405 | -0.490313 | -0.066021 | 0.221532 | 2.005529 | 0.401880 | 0.561396 | 0.137134 | 0.000000 |
| 50% | 0.037309 | -0.159869 | 0.135341 | 0.229316 | 0.619911 | 0.014231 | 0.326864 | 0.381211 | -0.018060 | -0.457076 | ... | 0.318100 | 0.407026 | -0.370159 | 0.085580 | 0.447293 | 2.388753 | 0.608100 | 0.815331 | 0.283761 | 1.000000 |
| 75% | 0.180088 | 0.064252 | 0.300395 | 0.367237 | 0.745467 | 0.322147 | 0.470344 | 0.506971 | 0.181824 | -0.312124 | ... | 0.440712 | 0.632685 | -0.249568 | 0.243186 | 0.693832 | 2.796120 | 0.839428 | 1.097490 | 0.423073 | 1.000000 |
| max | 0.834284 | 1.363669 | 1.226258 | 1.079529 | 1.278072 | 1.751863 | 1.157341 | 1.047349 | 1.402732 | 0.634696 | ... | 1.090721 | 1.760433 | 0.574692 | 1.059329 | 1.683764 | 4.601253 | 2.097823 | 2.642897 | 1.205982 | 1.000000 |
8 rows × 769 columns
X = df1.drop('label', axis=1).values
y = df1['label'].values
X = X[:5*(len(X)//5)]
y=y[:5*(len(y)//5)]
X_windows, y_windows = create_windows(X, y, window_size)
X_windows=np.array(X_windows)
y_windows=np.array(y_windows)
X_train, X_test, y_train, y_test = train_test_split(X_windows, y_windows, test_size=0.2, random_state=42)
X_train.shape
(23784, 5, 768)
model = Sequential()
# Add a GRU layer
model.add(GRU(units=64, input_shape=(window_size, X_train.shape[2]),return_sequences=True))
model.add(GRU(units=64, return_sequences=False))
model.add(Dense(units=1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.summary()
Model: "sequential_4"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
gru_2 (GRU) (None, 5, 64) 160128
gru_3 (GRU) (None, 64) 24960
dense_12 (Dense) (None, 1) 65
=================================================================
Total params: 185,153
Trainable params: 185,153
Non-trainable params: 0
_________________________________________________________________
history = model.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2)
Epoch 1/100 595/595 [==============================] - 6s 7ms/step - loss: 0.5682 - accuracy: 0.6938 - val_loss: 0.4443 - val_accuracy: 0.7847 Epoch 2/100 595/595 [==============================] - 4s 6ms/step - loss: 0.3931 - accuracy: 0.8148 - val_loss: 0.3342 - val_accuracy: 0.8501 Epoch 3/100 595/595 [==============================] - 4s 6ms/step - loss: 0.2831 - accuracy: 0.8737 - val_loss: 0.2883 - val_accuracy: 0.8749 Epoch 4/100 595/595 [==============================] - 4s 6ms/step - loss: 0.2024 - accuracy: 0.9136 - val_loss: 0.2382 - val_accuracy: 0.9031 Epoch 5/100 595/595 [==============================] - 4s 6ms/step - loss: 0.1562 - accuracy: 0.9349 - val_loss: 0.2056 - val_accuracy: 0.9176 Epoch 6/100 595/595 [==============================] - 4s 6ms/step - loss: 0.1177 - accuracy: 0.9533 - val_loss: 0.1734 - val_accuracy: 0.9298 Epoch 7/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0968 - accuracy: 0.9609 - val_loss: 0.1418 - val_accuracy: 0.9474 Epoch 8/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0726 - accuracy: 0.9722 - val_loss: 0.1135 - val_accuracy: 0.9577 Epoch 9/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0688 - accuracy: 0.9740 - val_loss: 0.1434 - val_accuracy: 0.9506 Epoch 10/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0619 - accuracy: 0.9754 - val_loss: 0.1087 - val_accuracy: 0.9609 Epoch 11/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0493 - accuracy: 0.9819 - val_loss: 0.1099 - val_accuracy: 0.9620 Epoch 12/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0464 - accuracy: 0.9824 - val_loss: 0.1018 - val_accuracy: 0.9662 Epoch 13/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0372 - accuracy: 0.9869 - val_loss: 0.2316 - val_accuracy: 0.9239 Epoch 14/100 595/595 [==============================] - 3s 5ms/step - loss: 0.0411 - accuracy: 0.9852 - val_loss: 0.0837 - val_accuracy: 0.9680 Epoch 15/100 595/595 [==============================] - 3s 5ms/step - loss: 0.0345 - accuracy: 0.9872 - val_loss: 0.0654 - val_accuracy: 0.9762 Epoch 16/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0322 - accuracy: 0.9884 - val_loss: 0.1666 - val_accuracy: 0.9451 Epoch 17/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0349 - accuracy: 0.9886 - val_loss: 0.0581 - val_accuracy: 0.9781 Epoch 18/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0257 - accuracy: 0.9913 - val_loss: 0.0927 - val_accuracy: 0.9725 Epoch 19/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0320 - accuracy: 0.9887 - val_loss: 0.1142 - val_accuracy: 0.9613 Epoch 20/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0273 - accuracy: 0.9896 - val_loss: 0.0775 - val_accuracy: 0.9762 Epoch 21/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0225 - accuracy: 0.9921 - val_loss: 0.1113 - val_accuracy: 0.9664 Epoch 22/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0257 - accuracy: 0.9905 - val_loss: 0.0592 - val_accuracy: 0.9834 Epoch 23/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0188 - accuracy: 0.9938 - val_loss: 0.0850 - val_accuracy: 0.9737 Epoch 24/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0241 - accuracy: 0.9914 - val_loss: 0.0559 - val_accuracy: 0.9807 Epoch 25/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0199 - accuracy: 0.9934 - val_loss: 0.0461 - val_accuracy: 0.9863 Epoch 26/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0154 - accuracy: 0.9954 - val_loss: 0.0716 - val_accuracy: 0.9733 Epoch 27/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0228 - accuracy: 0.9917 - val_loss: 0.1066 - val_accuracy: 0.9708 Epoch 28/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0196 - accuracy: 0.9933 - val_loss: 0.0425 - val_accuracy: 0.9870 Epoch 29/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0138 - accuracy: 0.9955 - val_loss: 0.0408 - val_accuracy: 0.9886 Epoch 30/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0195 - accuracy: 0.9932 - val_loss: 0.2950 - val_accuracy: 0.9254 Epoch 31/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0180 - accuracy: 0.9943 - val_loss: 0.1005 - val_accuracy: 0.9706 Epoch 32/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0149 - accuracy: 0.9950 - val_loss: 0.0632 - val_accuracy: 0.9798 Epoch 33/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0228 - accuracy: 0.9917 - val_loss: 0.0658 - val_accuracy: 0.9788 Epoch 34/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0123 - accuracy: 0.9961 - val_loss: 0.0700 - val_accuracy: 0.9792 Epoch 35/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0141 - accuracy: 0.9953 - val_loss: 0.1048 - val_accuracy: 0.9683 Epoch 36/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0191 - accuracy: 0.9941 - val_loss: 0.0673 - val_accuracy: 0.9809 Epoch 37/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0198 - accuracy: 0.9930 - val_loss: 0.0596 - val_accuracy: 0.9802 Epoch 38/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0091 - accuracy: 0.9968 - val_loss: 0.0411 - val_accuracy: 0.9868 Epoch 39/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0146 - accuracy: 0.9956 - val_loss: 0.1167 - val_accuracy: 0.9657 Epoch 40/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0079 - accuracy: 0.9971 - val_loss: 0.0373 - val_accuracy: 0.9893 Epoch 41/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0153 - accuracy: 0.9948 - val_loss: 0.0341 - val_accuracy: 0.9899 Epoch 42/100 595/595 [==============================] - 4s 6ms/step - loss: 3.8028e-04 - accuracy: 1.0000 - val_loss: 0.0284 - val_accuracy: 0.9914 Epoch 43/100 595/595 [==============================] - 4s 6ms/step - loss: 1.1975e-04 - accuracy: 1.0000 - val_loss: 0.0306 - val_accuracy: 0.9920 Epoch 44/100 595/595 [==============================] - 4s 6ms/step - loss: 6.2514e-05 - accuracy: 1.0000 - val_loss: 0.0322 - val_accuracy: 0.9920 Epoch 45/100 595/595 [==============================] - 4s 6ms/step - loss: 3.7462e-05 - accuracy: 1.0000 - val_loss: 0.0338 - val_accuracy: 0.9918 Epoch 46/100 595/595 [==============================] - 4s 6ms/step - loss: 2.2921e-05 - accuracy: 1.0000 - val_loss: 0.0358 - val_accuracy: 0.9918 Epoch 47/100 595/595 [==============================] - 4s 6ms/step - loss: 1.4356e-05 - accuracy: 1.0000 - val_loss: 0.0375 - val_accuracy: 0.9920 Epoch 48/100 595/595 [==============================] - 4s 6ms/step - loss: 9.2509e-06 - accuracy: 1.0000 - val_loss: 0.0392 - val_accuracy: 0.9922 Epoch 49/100 595/595 [==============================] - 4s 6ms/step - loss: 6.1832e-06 - accuracy: 1.0000 - val_loss: 0.0412 - val_accuracy: 0.9920 Epoch 50/100 595/595 [==============================] - 4s 6ms/step - loss: 4.1395e-06 - accuracy: 1.0000 - val_loss: 0.0429 - val_accuracy: 0.9924 Epoch 51/100 595/595 [==============================] - 4s 6ms/step - loss: 2.7758e-06 - accuracy: 1.0000 - val_loss: 0.0450 - val_accuracy: 0.9922 Epoch 52/100 595/595 [==============================] - 3s 6ms/step - loss: 1.8815e-06 - accuracy: 1.0000 - val_loss: 0.0469 - val_accuracy: 0.9929 Epoch 53/100 595/595 [==============================] - 3s 6ms/step - loss: 1.3326e-06 - accuracy: 1.0000 - val_loss: 0.0489 - val_accuracy: 0.9922 Epoch 54/100 595/595 [==============================] - 3s 6ms/step - loss: 9.3066e-07 - accuracy: 1.0000 - val_loss: 0.0512 - val_accuracy: 0.9922 Epoch 55/100 595/595 [==============================] - 3s 5ms/step - loss: 6.7715e-07 - accuracy: 1.0000 - val_loss: 0.0534 - val_accuracy: 0.9916 Epoch 56/100 595/595 [==============================] - 3s 6ms/step - loss: 4.9621e-07 - accuracy: 1.0000 - val_loss: 0.0552 - val_accuracy: 0.9922 Epoch 57/100 595/595 [==============================] - 3s 6ms/step - loss: 3.6088e-07 - accuracy: 1.0000 - val_loss: 0.0576 - val_accuracy: 0.9920 Epoch 58/100 595/595 [==============================] - 3s 6ms/step - loss: 2.5379e-07 - accuracy: 1.0000 - val_loss: 0.0603 - val_accuracy: 0.9905 Epoch 59/100 595/595 [==============================] - 4s 6ms/step - loss: 1.9344e-07 - accuracy: 1.0000 - val_loss: 0.0619 - val_accuracy: 0.9916 Epoch 60/100 595/595 [==============================] - 3s 6ms/step - loss: 1.4705e-07 - accuracy: 1.0000 - val_loss: 0.0634 - val_accuracy: 0.9914 Epoch 61/100 595/595 [==============================] - 3s 6ms/step - loss: 1.0123e-07 - accuracy: 1.0000 - val_loss: 0.0656 - val_accuracy: 0.9903 Epoch 62/100 595/595 [==============================] - 3s 6ms/step - loss: 7.4840e-08 - accuracy: 1.0000 - val_loss: 0.0672 - val_accuracy: 0.9910 Epoch 63/100 595/595 [==============================] - 3s 6ms/step - loss: 5.6293e-08 - accuracy: 1.0000 - val_loss: 0.0698 - val_accuracy: 0.9903 Epoch 64/100 595/595 [==============================] - 4s 6ms/step - loss: 4.3893e-08 - accuracy: 1.0000 - val_loss: 0.0718 - val_accuracy: 0.9908 Epoch 65/100 595/595 [==============================] - 3s 6ms/step - loss: 3.2538e-08 - accuracy: 1.0000 - val_loss: 0.0731 - val_accuracy: 0.9903 Epoch 66/100 595/595 [==============================] - 3s 6ms/step - loss: 2.7021e-08 - accuracy: 1.0000 - val_loss: 0.0750 - val_accuracy: 0.9903 Epoch 67/100 595/595 [==============================] - 3s 6ms/step - loss: 1.8983e-08 - accuracy: 1.0000 - val_loss: 0.0760 - val_accuracy: 0.9901 Epoch 68/100 595/595 [==============================] - 3s 6ms/step - loss: 1.4639e-08 - accuracy: 1.0000 - val_loss: 0.0778 - val_accuracy: 0.9903 Epoch 69/100 595/595 [==============================] - 3s 6ms/step - loss: 1.1215e-08 - accuracy: 1.0000 - val_loss: 0.0794 - val_accuracy: 0.9899 Epoch 70/100 595/595 [==============================] - 3s 6ms/step - loss: 9.0695e-09 - accuracy: 1.0000 - val_loss: 0.0819 - val_accuracy: 0.9899 Epoch 71/100 595/595 [==============================] - 3s 6ms/step - loss: 7.9337e-09 - accuracy: 1.0000 - val_loss: 0.0894 - val_accuracy: 0.9882 Epoch 72/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0853 - accuracy: 0.9796 - val_loss: 0.1665 - val_accuracy: 0.9479 Epoch 73/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0136 - accuracy: 0.9957 - val_loss: 0.0357 - val_accuracy: 0.9874 Epoch 74/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0132 - accuracy: 0.9964 - val_loss: 0.0952 - val_accuracy: 0.9668 Epoch 75/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0155 - accuracy: 0.9947 - val_loss: 0.0843 - val_accuracy: 0.9725 Epoch 76/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0130 - accuracy: 0.9962 - val_loss: 0.1119 - val_accuracy: 0.9634 Epoch 77/100 595/595 [==============================] - 3s 6ms/step - loss: 0.0171 - accuracy: 0.9939 - val_loss: 0.0684 - val_accuracy: 0.9800 Epoch 78/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0034 - accuracy: 0.9990 - val_loss: 0.0418 - val_accuracy: 0.9884 Epoch 79/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0175 - accuracy: 0.9942 - val_loss: 0.0549 - val_accuracy: 0.9878 Epoch 80/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0181 - accuracy: 0.9939 - val_loss: 0.0765 - val_accuracy: 0.9746 Epoch 81/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0107 - accuracy: 0.9966 - val_loss: 0.0398 - val_accuracy: 0.9891 Epoch 82/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0098 - accuracy: 0.9965 - val_loss: 0.0405 - val_accuracy: 0.9865 Epoch 83/100 595/595 [==============================] - 4s 6ms/step - loss: 0.0089 - accuracy: 0.9973 - val_loss: 0.0348 - val_accuracy: 0.9895 Epoch 84/100 595/595 [==============================] - 4s 6ms/step - loss: 1.6936e-04 - accuracy: 1.0000 - val_loss: 0.0332 - val_accuracy: 0.9918 Epoch 85/100 595/595 [==============================] - 3s 6ms/step - loss: 6.1327e-05 - accuracy: 1.0000 - val_loss: 0.0341 - val_accuracy: 0.9926 Epoch 86/100 595/595 [==============================] - 3s 6ms/step - loss: 3.5371e-05 - accuracy: 1.0000 - val_loss: 0.0353 - val_accuracy: 0.9931 Epoch 87/100 595/595 [==============================] - 4s 6ms/step - loss: 2.1930e-05 - accuracy: 1.0000 - val_loss: 0.0366 - val_accuracy: 0.9931 Epoch 88/100 595/595 [==============================] - 3s 6ms/step - loss: 1.3819e-05 - accuracy: 1.0000 - val_loss: 0.0379 - val_accuracy: 0.9933 Epoch 89/100 595/595 [==============================] - 3s 6ms/step - loss: 8.8870e-06 - accuracy: 1.0000 - val_loss: 0.0394 - val_accuracy: 0.9926 Epoch 90/100 595/595 [==============================] - 4s 6ms/step - loss: 5.8896e-06 - accuracy: 1.0000 - val_loss: 0.0410 - val_accuracy: 0.9926 Epoch 91/100 595/595 [==============================] - 4s 6ms/step - loss: 4.0627e-06 - accuracy: 1.0000 - val_loss: 0.0420 - val_accuracy: 0.9922 Epoch 92/100 595/595 [==============================] - 3s 6ms/step - loss: 2.8027e-06 - accuracy: 1.0000 - val_loss: 0.0436 - val_accuracy: 0.9922 Epoch 93/100 595/595 [==============================] - 4s 6ms/step - loss: 2.0242e-06 - accuracy: 1.0000 - val_loss: 0.0448 - val_accuracy: 0.9918 Epoch 94/100 595/595 [==============================] - 3s 6ms/step - loss: 1.4414e-06 - accuracy: 1.0000 - val_loss: 0.0468 - val_accuracy: 0.9924 Epoch 95/100 595/595 [==============================] - 3s 6ms/step - loss: 1.0424e-06 - accuracy: 1.0000 - val_loss: 0.0486 - val_accuracy: 0.9924 Epoch 96/100 595/595 [==============================] - 3s 6ms/step - loss: 7.5966e-07 - accuracy: 1.0000 - val_loss: 0.0497 - val_accuracy: 0.9924 Epoch 97/100 595/595 [==============================] - 3s 6ms/step - loss: 5.5500e-07 - accuracy: 1.0000 - val_loss: 0.0519 - val_accuracy: 0.9926 Epoch 98/100 595/595 [==============================] - 3s 6ms/step - loss: 4.0762e-07 - accuracy: 1.0000 - val_loss: 0.0537 - val_accuracy: 0.9929 Epoch 99/100 595/595 [==============================] - 3s 6ms/step - loss: 3.0388e-07 - accuracy: 1.0000 - val_loss: 0.0553 - val_accuracy: 0.9926 Epoch 100/100 595/595 [==============================] - 4s 6ms/step - loss: 2.2035e-07 - accuracy: 1.0000 - val_loss: 0.0572 - val_accuracy: 0.9929
y_pred= model.predict(X_test)
plot_metrics(history, y_test, y_pred)
186/186 [==============================] - 1s 2ms/step Accuracy: 0.993778375651589 Precision: 0.9923384410393071 Recall: 0.9953224189776144 F1 score: 0.9938281901584654
y_preds=[]
for i in y_pred:
if i>0.5:
y_preds.append(1)
else:
y_preds.append(0)
print(classification_report(y_test, y_preds))
precision recall f1-score support
0 1.00 0.99 0.99 2954
1 0.99 1.00 0.99 2993
accuracy 0.99 5947
macro avg 0.99 0.99 0.99 5947
weighted avg 0.99 0.99 0.99 5947
cm=confusion_matrix(y_test,y_preds)
print(cm)
[[2931 23] [ 14 2979]]
df=pd.read_csv("../Data/ffELAEfficientFormer.csv")
df.head()
| Unnamed: 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ... | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | -0.311707 | 0.459420 | -0.105934 | -0.027099 | 0.813496 | -0.097004 | -0.015042 | 0.085467 | -0.195130 | ... | 0.269270 | 0.743087 | -0.430609 | -0.026296 | 0.934145 | 2.190989 | 1.259573 | 1.721283 | 0.869057 | 0 |
| 1 | 1 | 0.094533 | 0.371845 | -0.191351 | 0.003292 | 0.679079 | 0.569582 | -0.031493 | 0.560364 | -0.260038 | ... | 0.215541 | 0.710751 | -0.121630 | -0.148940 | 0.807394 | 2.157245 | 1.398521 | 2.338162 | 0.729945 | 0 |
| 2 | 2 | 0.074376 | 0.234607 | 0.049538 | 0.231451 | 0.566247 | 0.742549 | 0.049717 | 0.477335 | -0.120970 | ... | 0.178271 | 0.541171 | -0.210184 | -0.109294 | 0.872813 | 2.513999 | 1.577552 | 2.106215 | 0.815446 | 0 |
| 3 | 3 | -0.039756 | -1.313070 | 0.567037 | 0.595682 | 0.440420 | -0.268075 | -0.027808 | 0.031323 | 0.183098 | ... | -0.147140 | 0.731044 | -0.482814 | -0.101063 | 1.062971 | 2.972917 | 0.251622 | 0.850666 | 0.179601 | 0 |
| 4 | 4 | -0.274827 | -0.995332 | 0.175439 | 0.280141 | 0.477032 | 0.842147 | -0.175154 | 0.226923 | 0.442570 | ... | 0.065944 | 0.442195 | -0.328092 | 0.122477 | 0.699524 | 3.154155 | 0.988861 | 0.490659 | 0.458583 | 0 |
5 rows × 770 columns
df=df.drop(columns=["Unnamed: 0"],axis=1)
df.head()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | -0.311707 | 0.459420 | -0.105934 | -0.027099 | 0.813496 | -0.097004 | -0.015042 | 0.085467 | -0.195130 | -0.167751 | ... | 0.269270 | 0.743087 | -0.430609 | -0.026296 | 0.934145 | 2.190989 | 1.259573 | 1.721283 | 0.869057 | 0 |
| 1 | 0.094533 | 0.371845 | -0.191351 | 0.003292 | 0.679079 | 0.569582 | -0.031493 | 0.560364 | -0.260038 | 0.341639 | ... | 0.215541 | 0.710751 | -0.121630 | -0.148940 | 0.807394 | 2.157245 | 1.398521 | 2.338162 | 0.729945 | 0 |
| 2 | 0.074376 | 0.234607 | 0.049538 | 0.231451 | 0.566247 | 0.742549 | 0.049717 | 0.477335 | -0.120970 | 0.217552 | ... | 0.178271 | 0.541171 | -0.210184 | -0.109294 | 0.872813 | 2.513999 | 1.577552 | 2.106215 | 0.815446 | 0 |
| 3 | -0.039756 | -1.313070 | 0.567037 | 0.595682 | 0.440420 | -0.268075 | -0.027808 | 0.031323 | 0.183098 | -0.392857 | ... | -0.147140 | 0.731044 | -0.482814 | -0.101063 | 1.062971 | 2.972917 | 0.251622 | 0.850666 | 0.179601 | 0 |
| 4 | -0.274827 | -0.995332 | 0.175439 | 0.280141 | 0.477032 | 0.842147 | -0.175154 | 0.226923 | 0.442570 | -0.566010 | ... | 0.065944 | 0.442195 | -0.328092 | 0.122477 | 0.699524 | 3.154155 | 0.988861 | 0.490659 | 0.458583 | 0 |
5 rows × 769 columns
df.describe()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | label | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| count | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | ... | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 | 33823.000000 |
| mean | 0.052882 | -0.328215 | 0.072574 | 0.277862 | 0.586622 | -0.233018 | 0.089849 | 0.357267 | 0.088051 | -0.473411 | ... | 0.264295 | 0.535334 | -0.390294 | 0.081880 | 0.524200 | 2.280714 | 0.655268 | 0.905279 | 0.246741 | 0.544215 |
| std | 0.236789 | 0.413154 | 0.256941 | 0.215841 | 0.196836 | 0.497329 | 0.323393 | 0.212874 | 0.301981 | 0.240738 | ... | 0.220006 | 0.373507 | 0.196632 | 0.225336 | 0.400860 | 0.594359 | 0.358512 | 0.492840 | 0.248471 | 0.498049 |
| min | -0.822473 | -1.936193 | -0.846923 | -0.416035 | -0.412400 | -2.178250 | -1.302664 | -0.620951 | -1.000455 | -1.461917 | ... | -0.812514 | -1.018852 | -1.226959 | -0.946252 | -0.811310 | -0.803695 | -0.434941 | -1.027854 | -0.600545 | 0.000000 |
| 25% | -0.110851 | -0.609363 | -0.103580 | 0.124798 | 0.459372 | -0.568462 | -0.121771 | 0.222016 | -0.126263 | -0.642405 | ... | 0.118272 | 0.270903 | -0.522028 | -0.069519 | 0.237629 | 1.894188 | 0.391100 | 0.566073 | 0.074965 | 0.000000 |
| 50% | 0.050866 | -0.311484 | 0.057009 | 0.268865 | 0.595286 | -0.203402 | 0.116580 | 0.365924 | 0.075175 | -0.487181 | ... | 0.268378 | 0.498306 | -0.393336 | 0.083612 | 0.559014 | 2.291855 | 0.638450 | 0.872589 | 0.243038 | 1.000000 |
| 75% | 0.213509 | -0.047798 | 0.233698 | 0.420930 | 0.724527 | 0.119384 | 0.323829 | 0.499547 | 0.291002 | -0.315119 | ... | 0.415809 | 0.776991 | -0.263076 | 0.233676 | 0.822059 | 2.681502 | 0.899615 | 1.211827 | 0.414427 | 1.000000 |
| max | 1.082605 | 1.295731 | 1.423512 | 1.242820 | 1.366030 | 1.563411 | 1.077811 | 1.194327 | 1.477179 | 0.586411 | ... | 1.143253 | 1.913406 | 0.449869 | 0.977305 | 1.857061 | 4.793428 | 1.837455 | 3.106472 | 1.191478 | 1.000000 |
8 rows × 769 columns
X = df.drop('label', axis=1).values
y = df['label'].values
X = X[:5*(len(X)//5)]
y=y[:5*(len(y)//5)]
# Assuming you have X and y (features and labels) already defined
X_windows, y_windows = create_windows(X, y, window_size)
X_windows=np.array(X_windows)
y_windows=np.array(y_windows)
X_train, X_test, y_train, y_test = train_test_split(X_windows, y_windows, test_size=0.2, random_state=42)
model = Sequential()
# Add a GRU layer
model.add(GRU(units=64, input_shape=(window_size, X_train.shape[2]),return_sequences=True))
model.add(GRU(units=64, return_sequences=False))
model.add(Dense(units=1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2)
Epoch 1/100 677/677 [==============================] - 7s 8ms/step - loss: 0.4214 - accuracy: 0.7988 - val_loss: 0.2305 - val_accuracy: 0.9063 Epoch 2/100 677/677 [==============================] - 4s 6ms/step - loss: 0.1843 - accuracy: 0.9288 - val_loss: 0.2463 - val_accuracy: 0.8939 Epoch 3/100 677/677 [==============================] - 4s 6ms/step - loss: 0.1122 - accuracy: 0.9576 - val_loss: 0.2504 - val_accuracy: 0.9133 Epoch 4/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0799 - accuracy: 0.9695 - val_loss: 0.1168 - val_accuracy: 0.9527 Epoch 5/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0655 - accuracy: 0.9750 - val_loss: 0.0786 - val_accuracy: 0.9686 Epoch 6/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0546 - accuracy: 0.9808 - val_loss: 0.1072 - val_accuracy: 0.9601 Epoch 7/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0448 - accuracy: 0.9829 - val_loss: 0.0501 - val_accuracy: 0.9824 Epoch 8/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0343 - accuracy: 0.9865 - val_loss: 0.0498 - val_accuracy: 0.9834 Epoch 9/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0311 - accuracy: 0.9887 - val_loss: 0.0375 - val_accuracy: 0.9850 Epoch 10/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0278 - accuracy: 0.9905 - val_loss: 0.0284 - val_accuracy: 0.9897 Epoch 11/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0285 - accuracy: 0.9895 - val_loss: 0.0636 - val_accuracy: 0.9791 Epoch 12/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0245 - accuracy: 0.9915 - val_loss: 0.0492 - val_accuracy: 0.9832 Epoch 13/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0209 - accuracy: 0.9918 - val_loss: 0.0498 - val_accuracy: 0.9806 Epoch 14/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0209 - accuracy: 0.9922 - val_loss: 0.0264 - val_accuracy: 0.9906 Epoch 15/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0189 - accuracy: 0.9937 - val_loss: 0.0266 - val_accuracy: 0.9900 Epoch 16/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0145 - accuracy: 0.9952 - val_loss: 0.0501 - val_accuracy: 0.9826 Epoch 17/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0171 - accuracy: 0.9939 - val_loss: 0.0255 - val_accuracy: 0.9895 Epoch 18/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0155 - accuracy: 0.9949 - val_loss: 0.0381 - val_accuracy: 0.9861 Epoch 19/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0150 - accuracy: 0.9950 - val_loss: 0.0357 - val_accuracy: 0.9869 Epoch 20/100 677/677 [==============================] - 4s 7ms/step - loss: 0.0155 - accuracy: 0.9948 - val_loss: 0.0362 - val_accuracy: 0.9871 Epoch 21/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0106 - accuracy: 0.9963 - val_loss: 0.0374 - val_accuracy: 0.9867 Epoch 22/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0121 - accuracy: 0.9955 - val_loss: 0.0563 - val_accuracy: 0.9837 Epoch 23/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0137 - accuracy: 0.9956 - val_loss: 0.0266 - val_accuracy: 0.9909 Epoch 24/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0149 - accuracy: 0.9950 - val_loss: 0.0216 - val_accuracy: 0.9913 Epoch 25/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0118 - accuracy: 0.9960 - val_loss: 0.0456 - val_accuracy: 0.9837 Epoch 26/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0091 - accuracy: 0.9970 - val_loss: 0.0292 - val_accuracy: 0.9917 Epoch 27/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0140 - accuracy: 0.9951 - val_loss: 0.0379 - val_accuracy: 0.9872 Epoch 28/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0049 - accuracy: 0.9988 - val_loss: 0.0512 - val_accuracy: 0.9817 Epoch 29/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0179 - accuracy: 0.9938 - val_loss: 0.0234 - val_accuracy: 0.9917 Epoch 30/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0045 - accuracy: 0.9985 - val_loss: 0.0363 - val_accuracy: 0.9897 Epoch 31/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0140 - accuracy: 0.9952 - val_loss: 0.0222 - val_accuracy: 0.9928 Epoch 32/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0022 - accuracy: 0.9994 - val_loss: 0.0288 - val_accuracy: 0.9898 Epoch 33/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0103 - accuracy: 0.9969 - val_loss: 0.0299 - val_accuracy: 0.9924 Epoch 34/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0113 - accuracy: 0.9963 - val_loss: 0.0409 - val_accuracy: 0.9869 Epoch 35/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0090 - accuracy: 0.9973 - val_loss: 0.0183 - val_accuracy: 0.9935 Epoch 36/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0041 - accuracy: 0.9989 - val_loss: 0.0468 - val_accuracy: 0.9860 Epoch 37/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0134 - accuracy: 0.9958 - val_loss: 0.0200 - val_accuracy: 0.9933 Epoch 38/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0073 - accuracy: 0.9976 - val_loss: 0.0266 - val_accuracy: 0.9906 Epoch 39/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0103 - accuracy: 0.9968 - val_loss: 0.0375 - val_accuracy: 0.9889 Epoch 40/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0087 - accuracy: 0.9971 - val_loss: 0.0384 - val_accuracy: 0.9897 Epoch 41/100 677/677 [==============================] - 4s 6ms/step - loss: 7.7035e-04 - accuracy: 0.9999 - val_loss: 0.0162 - val_accuracy: 0.9948 Epoch 42/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0077 - accuracy: 0.9976 - val_loss: 0.1179 - val_accuracy: 0.9597 Epoch 43/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0124 - accuracy: 0.9954 - val_loss: 0.0271 - val_accuracy: 0.9909 Epoch 44/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0025 - accuracy: 0.9993 - val_loss: 0.0407 - val_accuracy: 0.9895 Epoch 45/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0129 - accuracy: 0.9953 - val_loss: 0.0199 - val_accuracy: 0.9943 Epoch 46/100 677/677 [==============================] - 4s 6ms/step - loss: 0.0011 - accuracy: 0.9998 - val_loss: 0.0177 - val_accuracy: 0.9954 Epoch 47/100 677/677 [==============================] - 4s 6ms/step - loss: 2.2109e-04 - accuracy: 1.0000 - val_loss: 0.0140 - val_accuracy: 0.9961 Epoch 48/100 677/677 [==============================] - 4s 6ms/step - loss: 3.6975e-05 - accuracy: 1.0000 - val_loss: 0.0140 - val_accuracy: 0.9959 Epoch 49/100 677/677 [==============================] - 4s 7ms/step - loss: 2.0057e-05 - accuracy: 1.0000 - val_loss: 0.0142 - val_accuracy: 0.9959 Epoch 50/100 677/677 [==============================] - 4s 6ms/step - loss: 1.1714e-05 - accuracy: 1.0000 - val_loss: 0.0142 - val_accuracy: 0.9957 Epoch 51/100 677/677 [==============================] - 4s 6ms/step - loss: 8.9158e-06 - accuracy: 1.0000 - val_loss: 0.0147 - val_accuracy: 0.9956 Epoch 52/100 677/677 [==============================] - 4s 6ms/step - loss: 4.8164e-06 - accuracy: 1.0000 - val_loss: 0.0147 - val_accuracy: 0.9959 Epoch 53/100 677/677 [==============================] - 4s 6ms/step - loss: 3.3552e-06 - accuracy: 1.0000 - val_loss: 0.0149 - val_accuracy: 0.9957 Epoch 54/100 677/677 [==============================] - 4s 6ms/step - loss: 2.3322e-06 - accuracy: 1.0000 - val_loss: 0.0153 - val_accuracy: 0.9961 Epoch 55/100 677/677 [==============================] - 4s 6ms/step - loss: 1.6533e-06 - accuracy: 1.0000 - val_loss: 0.0157 - val_accuracy: 0.9961 Epoch 56/100 677/677 [==============================] - 4s 6ms/step - loss: 1.1924e-06 - accuracy: 1.0000 - val_loss: 0.0159 - val_accuracy: 0.9961 Epoch 57/100 677/677 [==============================] - 4s 6ms/step - loss: 8.5447e-07 - accuracy: 1.0000 - val_loss: 0.0162 - val_accuracy: 0.9959 Epoch 58/100 677/677 [==============================] - 4s 6ms/step - loss: 6.0680e-07 - accuracy: 1.0000 - val_loss: 0.0164 - val_accuracy: 0.9963 Epoch 59/100 677/677 [==============================] - 4s 6ms/step - loss: 4.3435e-07 - accuracy: 1.0000 - val_loss: 0.0168 - val_accuracy: 0.9959 Epoch 60/100 677/677 [==============================] - 4s 6ms/step - loss: 3.1250e-07 - accuracy: 1.0000 - val_loss: 0.0172 - val_accuracy: 0.9963 Epoch 61/100 677/677 [==============================] - 4s 6ms/step - loss: 2.2490e-07 - accuracy: 1.0000 - val_loss: 0.0177 - val_accuracy: 0.9965 Epoch 62/100 677/677 [==============================] - 4s 6ms/step - loss: 1.6274e-07 - accuracy: 1.0000 - val_loss: 0.0179 - val_accuracy: 0.9963 Epoch 63/100 677/677 [==============================] - 4s 6ms/step - loss: 1.1846e-07 - accuracy: 1.0000 - val_loss: 0.0184 - val_accuracy: 0.9959 Epoch 64/100 677/677 [==============================] - 4s 6ms/step - loss: 8.6603e-08 - accuracy: 1.0000 - val_loss: 0.0187 - val_accuracy: 0.9961 Epoch 65/100 677/677 [==============================] - 4s 6ms/step - loss: 6.2192e-08 - accuracy: 1.0000 - val_loss: 0.0193 - val_accuracy: 0.9963 Epoch 66/100 677/677 [==============================] - 4s 6ms/step - loss: 4.5779e-08 - accuracy: 1.0000 - val_loss: 0.0195 - val_accuracy: 0.9959 Epoch 67/100 677/677 [==============================] - 4s 6ms/step - loss: 3.3659e-08 - accuracy: 1.0000 - val_loss: 0.0197 - val_accuracy: 0.9963 Epoch 68/100 677/677 [==============================] - 4s 6ms/step - loss: 2.4984e-08 - accuracy: 1.0000 - val_loss: 0.0198 - val_accuracy: 0.9963 Epoch 69/100 677/677 [==============================] - 4s 6ms/step - loss: 1.8364e-08 - accuracy: 1.0000 - val_loss: 0.0203 - val_accuracy: 0.9963 Epoch 70/100 677/677 [==============================] - 4s 6ms/step - loss: 1.3623e-08 - accuracy: 1.0000 - val_loss: 0.0205 - val_accuracy: 0.9963 Epoch 71/100 677/677 [==============================] - 4s 6ms/step - loss: 1.0270e-08 - accuracy: 1.0000 - val_loss: 0.0209 - val_accuracy: 0.9963 Epoch 72/100 677/677 [==============================] - 4s 5ms/step - loss: 7.7838e-09 - accuracy: 1.0000 - val_loss: 0.0212 - val_accuracy: 0.9963 Epoch 73/100 677/677 [==============================] - 4s 6ms/step - loss: 5.9432e-09 - accuracy: 1.0000 - val_loss: 0.0214 - val_accuracy: 0.9961 Epoch 74/100 677/677 [==============================] - 4s 6ms/step - loss: 4.6105e-09 - accuracy: 1.0000 - val_loss: 0.0216 - val_accuracy: 0.9963 Epoch 75/100 677/677 [==============================] - 4s 6ms/step - loss: 3.6277e-09 - accuracy: 1.0000 - val_loss: 0.0219 - val_accuracy: 0.9963 Epoch 76/100 677/677 [==============================] - 4s 6ms/step - loss: 2.8977e-09 - accuracy: 1.0000 - val_loss: 0.0221 - val_accuracy: 0.9963 Epoch 77/100 677/677 [==============================] - 4s 6ms/step - loss: 2.3392e-09 - accuracy: 1.0000 - val_loss: 0.0222 - val_accuracy: 0.9961 Epoch 78/100 677/677 [==============================] - 4s 6ms/step - loss: 1.9451e-09 - accuracy: 1.0000 - val_loss: 0.0223 - val_accuracy: 0.9961 Epoch 79/100 677/677 [==============================] - 4s 6ms/step - loss: 1.6261e-09 - accuracy: 1.0000 - val_loss: 0.0225 - val_accuracy: 0.9963 Epoch 80/100 677/677 [==============================] - 4s 6ms/step - loss: 1.3913e-09 - accuracy: 1.0000 - val_loss: 0.0226 - val_accuracy: 0.9961 Epoch 81/100 677/677 [==============================] - 4s 6ms/step - loss: 1.2150e-09 - accuracy: 1.0000 - val_loss: 0.0227 - val_accuracy: 0.9963 Epoch 82/100 677/677 [==============================] - 4s 6ms/step - loss: 1.0719e-09 - accuracy: 1.0000 - val_loss: 0.0228 - val_accuracy: 0.9961 Epoch 83/100 677/677 [==============================] - 4s 6ms/step - loss: 9.6171e-10 - accuracy: 1.0000 - val_loss: 0.0228 - val_accuracy: 0.9961 Epoch 84/100 677/677 [==============================] - 4s 6ms/step - loss: 8.7210e-10 - accuracy: 1.0000 - val_loss: 0.0230 - val_accuracy: 0.9963 Epoch 85/100 677/677 [==============================] - 4s 6ms/step - loss: 8.0616e-10 - accuracy: 1.0000 - val_loss: 0.0230 - val_accuracy: 0.9961 Epoch 86/100 677/677 [==============================] - 4s 6ms/step - loss: 7.4568e-10 - accuracy: 1.0000 - val_loss: 0.0231 - val_accuracy: 0.9961 Epoch 87/100 677/677 [==============================] - 4s 6ms/step - loss: 6.9626e-10 - accuracy: 1.0000 - val_loss: 0.0232 - val_accuracy: 0.9961 Epoch 88/100 677/677 [==============================] - 4s 6ms/step - loss: 6.6384e-10 - accuracy: 1.0000 - val_loss: 0.0233 - val_accuracy: 0.9961 Epoch 89/100 677/677 [==============================] - 4s 6ms/step - loss: 6.2699e-10 - accuracy: 1.0000 - val_loss: 0.0232 - val_accuracy: 0.9959 Epoch 90/100 677/677 [==============================] - 4s 6ms/step - loss: 5.9606e-10 - accuracy: 1.0000 - val_loss: 0.0233 - val_accuracy: 0.9961 Epoch 91/100 677/677 [==============================] - 4s 6ms/step - loss: 5.7268e-10 - accuracy: 1.0000 - val_loss: 0.0232 - val_accuracy: 0.9959 Epoch 92/100 677/677 [==============================] - 4s 6ms/step - loss: 5.4823e-10 - accuracy: 1.0000 - val_loss: 0.0233 - val_accuracy: 0.9959 Epoch 93/100 677/677 [==============================] - 4s 6ms/step - loss: 5.2856e-10 - accuracy: 1.0000 - val_loss: 0.0234 - val_accuracy: 0.9959 Epoch 94/100 677/677 [==============================] - 4s 6ms/step - loss: 5.0852e-10 - accuracy: 1.0000 - val_loss: 0.0234 - val_accuracy: 0.9959 Epoch 95/100 677/677 [==============================] - 4s 6ms/step - loss: 4.9087e-10 - accuracy: 1.0000 - val_loss: 0.0235 - val_accuracy: 0.9959 Epoch 96/100 677/677 [==============================] - 4s 6ms/step - loss: 4.7331e-10 - accuracy: 1.0000 - val_loss: 0.0235 - val_accuracy: 0.9957 Epoch 97/100 677/677 [==============================] - 4s 6ms/step - loss: 4.6645e-10 - accuracy: 1.0000 - val_loss: 0.0235 - val_accuracy: 0.9957 Epoch 98/100 677/677 [==============================] - 4s 6ms/step - loss: 4.5520e-10 - accuracy: 1.0000 - val_loss: 0.0235 - val_accuracy: 0.9957 Epoch 99/100 677/677 [==============================] - 4s 6ms/step - loss: 4.4824e-10 - accuracy: 1.0000 - val_loss: 0.0236 - val_accuracy: 0.9957 Epoch 100/100 677/677 [==============================] - 4s 6ms/step - loss: 4.3337e-10 - accuracy: 1.0000 - val_loss: 0.0236 - val_accuracy: 0.9957
y_pred= model.predict(X_test)
plot_metrics(history, y_test, y_pred)
212/212 [==============================] - 1s 2ms/step Accuracy: 0.9946777054997044 Precision: 0.9945130315500685 Recall: 0.9956056028563581 F1 score: 0.9950590172934394
y_preds=[]
for i in y_pred:
if i>0.5:
y_preds.append(1)
else:
y_preds.append(0)
print(classification_report(y_test, y_preds))
precision recall f1-score support
0 0.99 0.99 0.99 3123
1 0.99 1.00 1.00 3641
accuracy 0.99 6764
macro avg 0.99 0.99 0.99 6764
weighted avg 0.99 0.99 0.99 6764
cm=confusion_matrix(y_test,y_preds)
print(cm)
[[3103 20] [ 16 3625]]